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

Chuyển đổi string sang mảng char trong C++

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.