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
Lepaskan: 2024-12-03 04:20:10
asal
896 orang telah melayarinya

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*
Salin selepas log masuk

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
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan