Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Menukar C std::string kepada char* atau char[]?

Bagaimana Saya Menukar C std::string kepada char* atau char[]?

Patricia Arquette
Patricia Arquetteasal
2024-12-03 04:20:10863semak imbas

How Do I Convert a C   std::string to a char* or char[]?

Menukar std::string kepada char* atau char[]

Menukar std::string kepada char* atau char[] jenis data dalam C memerlukan kaedah eksplisit, kerana ia tidak menukar secara automatik.

Kaedah 1: Menggunakan c_str()

Untuk mendapatkan versi rentetan C std:: rentetan, gunakan kaedah c_str(). Kaedah ini mengembalikan const char. Untuk char bukan const, gunakan .data():

std::string str = "string";
const char *cstr = str.c_str(); // const char*
char *cstr = str.data(); // non-const char*

Kaedah 2: Menyalin ke dalam Vektor

Salin aksara std::string ke dalam a std::vector:

std::vector<char> cstr(str.c_str(), str.c_str() + str.size() + 1);
char *ptr = cstr.data(); // pointer to c-string

Kaedah 3: Peruntukan Tatasusunan Manual (Tidak Disyorkan)

Peruntukkan tatasusunan secara manual untuk rentetan C:

const char *cstr = new char[str.size() + 1];
std::strcpy(cstr, str.c_str());
// ... use the array ...
delete [] cstr;

Ia amat penting ingat bahawa pengurusan memori manual boleh membawa kepada ralat. Sebagai amalan terbaik, lebih suka menggunakan .c_str() atau .data().

Atas ialah kandungan terperinci Bagaimana Saya Menukar C std::string kepada char* atau char[]?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apl strimArtikel seterusnya:Apl strim