Chuyển tới nội dung chính

std::string::cbegin

#include <string>

const_iterator cbegin() const noexcept;

Trả về một const iterator trỏ đến ký tự đầu tiên của 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.

Tham số

Không có tham số

Giá trị trả về

const_iterator

  • Một const iterator trỏ đến ký tự đầu tiên của chuỗi.

Đặc điểm

  1. cbegin() 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ừ cbegin().
  2. 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.
  3. cbegin() luôn trả về const_iterator, kể cả khi đối tượng std::string là non-const.
  4. 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.
  5. cbegin() 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.
  6. cbegin() thường được sử dụng để:
    • Duyệt qua các ký tự của chuỗi từ đầu đến cuối mà không làm thay đổi nội dung chuỗi.
    • 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).
    • Cung cấp quyền truy cập chỉ đọc vào chuỗi cho các hàm hoặc đối tượng khác.

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 và cbegin()
std::cout << "Chuỗi (sử dụng cbegin): ";
for (auto it = str.cbegin(); it != str.cend(); ++it) {
std::cout << *it;
}
std::cout << std::endl;

// Ví dụ sử dụng 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

beginTrả về một iterator trỏ đến ký tự đầu tiên của chuỗi std::string
cendTrả về một const iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi
crbeginTrả về một const reverse iterator trỏ đến ký tự cuối cùng của chuỗi