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

std::string::begin

#include <string>

// Phiên bản non-const:
iterator begin() noexcept;

// Phiên bản const:
const_iterator begin() const noexcept;

Trả về một iterator trỏ đến ký tự đầu tiên của chuỗi std::string. Iterator này có thể được sử dụng để duyệt qua các ký tự trong chuỗi, từ đầu đến cuối.

Tham số

Không có tham số

Giá trị trả về

iterator

  • Một iterator trỏ đến ký tự đầu tiên của chuỗi (phiên bản non-const).

const_iterator

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

Đặc điểm

  1. begin() có hai phiên bản:
    • Phiên bản non-const trả về iterator cho phép thay đổi nội dung của chuỗi thông qua iterator đó.
    • Phiên bản const trả về const_iterator không cho phép thay đổi nội dung của chuỗi thông qua iterator đó.
  2. begin() 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.
  3. iterator cho phép thay đổi giá trị của phần tử mà nó trỏ đến, trong khi const_iterator thì không.
  4. Phạm vi được xác định bởi begin()end() là nửa mở [begin, end), không bao gồm phần tử end().
  5. begin() thường được sử dụng để:
    • Duyệt qua các ký tự của chuỗi từ đầu đến cuố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 (ví dụ: std::for_each, std::transform, std::copy,...).
    • Xác định điểm bắt đầu của một phạm vi (range) đại diện cho toàn bộ chuỗi.

Ví dụ

#include <iostream>
#include <string>
#include <algorithm>

int main() {
std::string str = "Hello, world!";

// Duyệt qua chuỗi sử dụng iterator
std::cout << "Chuỗi: ";
for (std::string::iterator it = str.begin(); it != str.end(); ++it) {
std::cout << *it;
}
std::cout << std::endl;

// Thay đổi ký tự đầu tiên sử dụng iterator
if (!str.empty()) {
*str.begin() = 'h';
}

// Sử dụng std::transform với iterator
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
std::cout << "Chuỗi sau khi biến đổi: " << str << std::endl;

return 0;
}

Các hàm liên quan

endTrả về một iterator trỏ đến vị trí ngay sau ký tự cuối cùng của chuỗi std::string
rbeginTrả về một reverse iterator trỏ đến ký tự cuối cùng của chuỗi