Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm c_str() của std::string trong C++


c_str() – Trả về con trỏ const char* trỏ đến mảng ký tự kết thúc bằng null (\0), đại diện cho nội dung string.

Cú pháp

const char* c_str() const noexcept;
  • Không tham số.
  • Trả về con trỏ chỉ đọc (không được sửa đổi).
  • Độ dài mảng = size() + 1 (kể cả null terminator).
  • Con trỏ có thể vô hiệu hóa khi string bị sửa đổi/reallocate.

Ví dụ

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s = "I Love Tutorials Point";
    cout << "String: " << s << "\n";
    cout << "c_str(): " << s.c_str() << "\n";
    
    // Duyệt qua c_str()
    bool found = false;
    for (size_t i = 0; i < s.size(); i++) {
        if (s.c_str()[i] == 'P') { found = true; break; }
    }
    cout << (found ? "Tim thay 'P'" : "Khong tim thay 'P'") << "\n";
    
    // Chuyển sang C-style string để dùng với API C
    printf("In bang printf: %s\n", s.c_str());
    return 0;
}

Kết quả

String: I Love Tutorials Point
c_str(): I Love Tutorials Point
Tim thay 'P'
In bang printf: I Love Tutorials Point

Lưu ý

  • C++11 đảm bảo s.c_str()[s.size()] == '\0'.
  • Dùng data() (C++17) cũng trả về con trỏ có null-terminator.
  • Không dùng const_cast để sửa đổi kết quả – hành vi không xác định.