Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencipta std::string dengan Aksara Null Terbenam dalam C ?
Mencipta std::string dengan Aksara Null Terbenam
Masalah:
Apabila mencuba untuk membina std::string dengan baris yang mengandungi aksara nol terbenam ( ), seperti sebagai:
std::string my_string("a<pre class="brush:php;toolbar:false">#include <iostream> #include <string> int main() { using namespace std::string_literals; std::string s = "pl-<pre class="brush:php;toolbar:false">std::string x("pqrs"); // Two characters because input assumed to be C-String std::string x("pqrs",5); // 5 Characters because input is now a char array with 5 characters.-op"s; // Notice the "s" at the end of the string literal std::cout << s << "\n"; }b");
hanya watak sebelum watak nol dikekalkan. Bagaimanakah kita boleh membina rentetan dengan betul dengan aksara nol terbenam?
Penyelesaian:
Sejak C 14
C 14 diperkenalkan literal rentetan, membolehkan penciptaan langsung std::strings dengan aksara nol terbenam menggunakan s akhiran:
Sebelum C 14
Sebelum C 14, std::string pembina menganggap input ialah rentetan gaya C, yang berakhir dengan watak null. Untuk mengendalikan aksara nol terbenam, gunakan pembina yang mengambil tatasusunan aksara dan panjang:
Nota: std::strings tidak secara inheren ditamatkan. Walau bagaimanapun, kaedah c_str() menyediakan penunjuk kepada penimbal dalaman yang mengandungi rentetan C dengan penamat null.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta std::string dengan Aksara Null Terbenam dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!