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.