std::string::cend
#include <string>
Trả về một const iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi. Iterator này đóng vai trò là "past-the-end" iterator, đánh dấu điểm kết thúc của chuỗi và không trỏ đến bất kỳ ký tự hợp lệ nào trong chuỗi. const_iterator cho phép đọc giá trị của ký tự nhưng không cho phép thay đổi nội dung của chuỗi thông qua iterator này.
const_iterator cend() const noexcept;
Tham số
Không có tham số
Giá trị trả về
const_iterator
- Một const iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi.
Đặc điểm
cend()
luôn trả về const_iterator bất kể đối tượng std::string được gọi là const hay non-const. Điều này đảm bảo rằng bạn không thể vô tình thay đổi nội dung chuỗi thông qua iterator trả về từcend()
.- Iterator trả về bởi
cend()
không trỏ đến ký tự hợp lệ trong chuỗi. Nó chỉ đánh dấu vị trí "past-the-end". Do đó, bạn không được phép giải tham chiếu (dereference) iterator này (*str.cend()
là không hợp lệ). - Phạm vi
[cbegin, cend)
là "nửa mở", bao gồm phần tử cbegin nhưng không bao gồm phần tử cend. cend()
luôn trả về const_iterator, kể cả khi đối tượng std::string là non-const.- const_iterator chỉ cho phép đọc, không cho phép thay đổi giá trị của phần tử mà nó trỏ đến.
cend()
là một hàm thành viên của std::string (và std::basic_string) được thêm vào từ C++11, để hỗ trợ tốt hơn cho việc lập trình với các đối tượng const và cung cấp quyền truy cập chỉ đọc vào chuỗi.cend()
thường được sử dụng để:- Xác định điểm kết thúc của một phạm vi (range) đại diện cho toàn bộ chuỗi, khi duyệt qua chuỗi bằng const iterator (từ
cbegin()
đếncend()
). - Kết hợp với các thuật toán trong thư viện
<algorithm>
để thao tác với chuỗi (nhưng chỉ các thuật toán không làm thay đổi nội dung chuỗi, ví dụ: std::for_each, std::find, ...). - Kiểm tra xem const iterator đã đi đến cuối chuỗi hay chưa.
- Xác định điểm kết thúc của một phạm vi (range) đại diện cho toàn bộ chuỗi, khi duyệt qua chuỗi bằng const iterator (từ
Ví dụ
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "Hello, world!";
// Duyệt qua chuỗi sử dụng const_iterator, cbegin() và cend()
std::cout << "Chuỗi (sử dụng cbegin và cend): ";
for (auto it = str.cbegin(); it != str.cend(); ++it) {
std::cout << *it;
}
std::cout << std::endl;
// Sử dụng std::find với cbegin() và cend()
auto it = std::find(str.cbegin(), str.cend(), ',');
if (it != str.cend()) {
std::cout << "Dấu phẩy được tìm thấy tại vị trí: " << (it - str.cbegin()) << std::endl;
}
return 0;
}
Các hàm liên quan
end | Trả về một iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi std::string |
cbegin | Trả về một const iterator trỏ đến ký tự đầu tiên của chuỗi |
crend | Trả về một const reverse iterator trỏ đến vị trí "giả định" nằm trước phần tử đầu tiên của chuỗi |