Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mencipta `std::string` yang Mengandungi Aksara Null Terbenam dalam C ?

Bagaimanakah Saya Boleh Mencipta `std::string` yang Mengandungi Aksara Null Terbenam dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-29 08:06:10
asal
801 orang telah melayarinya

How Can I Create a `std::string` Containing Embedded Null Characters in C  ?

Mencipta std::string dengan Null Terbenam: Peperiksaan Mendalam

Apabila membina std::string daripada literal rentetan yang mengandungi null terbenam aksara, seperti "std::string my_string("a\0b");", hanya aksara pertama mungkin terdapat dalam yang terhasil rentetan. Untuk menangani cabaran ini, pelbagai pendekatan boleh digunakan bergantung pada versi C yang digunakan.

C 14 dan Kemudian

Dalam C 14 dan seterusnya, literal rentetan memperoleh keupayaan untuk mewakili aksara yang merangkumi null terbenam. . Dengan menambahkan akhiran "s" pada literal rentetan, ia boleh dianggap sebagai literal std::string dan bukannya literal rentetan C. Contohnya:

std::string s = "pl-<pre class="brush:php;toolbar:false">std::string   x("pq\0rs");   // Two characters because input assumed to be C-String
std::string   x("pq\0rs",5); // 5 Characters as the input is a char array with 5 characters.
Salin selepas log masuk
-op"s; // Notice the "s" at the end.

Penyelesaian Pra-C 14

Sebelum C 14, pembina std::string yang mengambil aksara* menganggap input ialah rentetan-C, iaitu dibatalkan. Untuk mengimbangi, pembina yang berbeza mesti digunakan yang menerima tatasusunan char dan panjangnya:

Adalah penting untuk ambil perhatian bahawa std::string dalam C tidak ditamatkan nol, tidak seperti rentetan C. Walau bagaimanapun, kaedah c_str() boleh memberikan penunjuk kepada penimbal dalaman yang mengandungi perwakilan rentetan C yang ditamatkan nol.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta `std::string` yang Mengandungi Aksara Null Terbenam dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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