std::string::end
#include <string>
Trả về một iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi std::string. 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.
// Phiên bản non-const:
iterator end() noexcept;
// Phiên bản const:
const_iterator end() const noexcept;
Tham số
Không có tham số
Giá trị trả về
iterator
- Một iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi (phiên bản non-const).
const_iterator
- Một const iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi (phiên bản const).
Đặc điểm
- Iterator trả về bởi
end()
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.end()
là không hợp lệ và có thể dẫn đến lỗi). - Phạm vi
[begin, end)
là "nửa mở", bao gồm phần tử begin nhưng không bao gồm phần tử end. end()
trả về iterator khi được gọi trên đối tượng std::string non-const, và trả về const_iterator khi được gọi trên đối tượng std::string const.- iterator cho phép thay đổi giá trị của phần tử mà nó trỏ đến (nhưng không phải là
end()
), trong khi const_iterator thì không. end()
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 iterator.
- Kết hợp với các thuật toán trong thư viện
<algorithm>
để thao tác với chuỗi (ví dụ: std::for_each, std::transform, std::copy, std::find,...). - Kiểm tra xem iterator đã đi đến cuối chuỗi hay chưa.
Ví dụ
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "Hello, world!";
// Duyệt qua chuỗi sử dụng iterator và end()
std::cout << "Chuỗi: ";
for (std::string::iterator it = str.begin(); it != str.end(); ++it) {
std::cout << *it;
}
std::cout << std::endl;
// Sử dụng std::find với end()
std::string::iterator it = std::find(str.begin(), str.end(), ',');
if (it != str.end()) {
std::cout << "Dấu phẩy được tìm thấy tại vị trí: " << (it - str.begin()) << std::endl;
}
return 0;
}
Các hàm liên quan
begin | Trả về một iterator trỏ đến ký tự đầu tiên của chuỗi std::string |
rbegin | Trả về một reverse iterator trỏ đến ký tự cuối cùng của chuỗi |
rend | Trả về một reverse iterator trỏ đến vị trí "giả định" nằm trước phần tử đầu tiên của chuỗi |