Có nhiều cách chuyển std::string sang mảng char (C-style string) trong C++.
Cách 1: Sao chép thủ công (không khuyến khích)
#include <iostream>
#include <string>
using namespace std;
int main() {
char m[] = "Tutorialspoint";
string str;
for (size_t i = 0; i < sizeof(m); ++i) {
str[i] = m[i];
cout << str[i];
}
return 0;
}
Cách 2: Dùng strcpy (C-style)
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
string str = "Tutorialspoint";
char c[str.size() + 1]; // +1 cho null terminator
strcpy(c, str.c_str());
cout << c << '\n';
return 0;
}
Cách 3: Dùng string::copy (C++ style, an toàn hơn)
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Tutorialspoint";
char c[str.size() + 1];
str.copy(c, str.size() + 1);
c[str.size()] = '\0'; // thêm null terminator
cout << c << '\n';
return 0;
}
Kết quả (cả 3 cách)
Tutorialspoint
Khuyến nghị: Cách 3 (string::copy) an toàn nhất, không phụ thuộc <cstring> và tránh buffer overflow nếu dùng đúng kích thước.