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

Bagaimana untuk Menukar `std::string` kepada `char*` atau `char[]` dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-11-30 15:39:09132semak imbas

How to Convert a `std::string` to a `char*` or `char[]` in C  ?

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

Dalam C , seseorang mungkin menghadapi keperluan untuk menukar std:: rentetan, yang memegang jujukan aksara, ke dalam tatasusunan aksara yang ditamatkan nol yang diwakili oleh char* atau char[]. Walau bagaimanapun, penukaran langsung menggunakan pengendali tugasan mengakibatkan ralat.

Untuk mencapai penukaran ini, beberapa kaedah tersedia:

1. c_str() kaedah:

Kaedah c_str() std::string mengembalikan penuding kepada rentetan gaya C asas, yang ditamatkan nol. Penunjuk ini boleh ditugaskan terus kepada pembolehubah char*.

std::string str = "string";
const char *cstr = str.c_str();

2. kaedah data():

Kaedah data() std::string juga mengembalikan penuding kepada rentetan gaya C yang mendasari, tetapi ia bukan const. Penunjuk ini boleh diberikan kepada pembolehubah char* tanpa kelayakan const.

std::string str = "string";
char *cstr = str.data();

Pilihan Lain:

  • Menyalin ke dalam std: :vector:

Seseorang boleh mencipta std::vektor aksara dan salin aksara dari std::string ke dalamnya. Kaedah data() vektor kemudiannya boleh digunakan untuk mendapatkan penunjuk char*.

  • Peruntukan Memori Manual:

Seseorang boleh secara manual peruntukkan tatasusunan aksara menggunakan operator baharu, salin aksara daripada std::string ke dalam tatasusunan dan gunakan tatasusunan sebagai penunjuk char*. Pendekatan ini harus digunakan dengan berhati-hati kerana isu pengurusan memori manual.

Ringkasnya, kaedah c_str() dan data() std::string menyediakan cara mudah untuk menukar std::string kepada char* atau jenis data char[]. Pilihan lain, seperti menyalin ke dalam std::vektor atau peruntukan memori manual, boleh digunakan dalam situasi tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Menukar `std::string` kepada `char*` atau `char[]` dalam C ?. 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