Rumah >pembangunan bahagian belakang >C++ >Adakah `std::string` Mengandungi Penamat Null?

Adakah `std::string` Mengandungi Penamat Null?

Susan Sarandon
Susan Sarandonasal
2024-12-07 21:07:17963semak imbas

Does `std::string` Contain a Null Terminator?

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
'; cout << s.size() << '\n';

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!

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