Adakah std::string Mempunyai Null Terminator Terbina Dalam?
Bertentangan dengan kepercayaan umum, std::string tidak semestinya membawa penamat null ' '. Tingkah laku ini berbeza daripada tatasusunan aksara, yang secara automatik menambahkan aksara nol untuk menandakan penamatan rentetan.
Walau bagaimanapun, terdapat pengecualian penting untuk peraturan ini: kaedah temp.c_str(). Apabila anda menggunakan kaedah ini, rentetan yang dikembalikan akan menyertakan penamat null. Ini membolehkan rentetan dikendalikan dan diproses dengan cara yang serasi dengan rentetan gaya C tradisional.
Selain itu, penting untuk ambil perhatian bahawa anda boleh memasukkan aksara nol secara eksplisit dalam std::string sama seperti mana-mana watak lain. Dengan memberikan ' ' pada kedudukan aksara dalam rentetan, anda boleh membahagikan rentetan itu kepada dua subrentetan dengan berkesan.
Sebagai contoh, pertimbangkan coretan kod berikut:
string s("hello"); cout << s.size() << ' '; s[1] = '<pre class="brush:php;toolbar:false">5 5
Keluaran ini kod ialah:
yang menunjukkan bahawa aksara nol tidak menjejaskan saiz rentetan yang dilihat. Sebabnya ialah aksara nol tidak mempunyai makna istimewa dalam konteks std::strings.
Atas ialah kandungan terperinci Adakah `std::string` Mengandungi Penamat Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!