Rumah > pembangunan bahagian belakang > C++ > Adakah C 11 Memerlukan Rentetan Null-Terminated untuk c_str() dan data()?

Adakah C 11 Memerlukan Rentetan Null-Terminated untuk c_str() dan data()?

Mary-Kate Olsen
Lepaskan: 2024-10-27 03:15:02
asal
340 orang telah melayarinya

 Does C  11 Require Null-Terminated Strings for c_str() and data()?

Adakah C 11 Membenarkan Rentetan Tidak Ditamatkan Nol dalam Kaedah c_str()?

Dalam C 11, takrifan c_str( ) untuk kelas basic_string telah berubah. Ia kini ditakrifkan sebagai bersamaan dengan data(), yang seterusnya ditakrifkan untuk mengembalikan penunjuk kepada elemen ke-n rentetan, dengan n adalah antara 0 dan saiz rentetan tolak 1.

Walau bagaimanapun , takrifan kaedah operator[] yang dikemas kini, yang mendasari kedua-dua c_str() dan data(), menjelaskan bahawa rentetan kini mesti menggunakan penimbal yang ditamatkan nol secara dalaman.

Secara khusus, kaedah operator[] memerlukan bahawa nilai yang dikembalikan adalah rujukan kepada objek jenis T dengan nilai carta(), dengan T ialah jenis elemen rentetan dan carta() ialah jenis aksara nol. Selain itu, nilai yang dirujuk ini tidak boleh diubah suai.

Memandangkan c_str() dan data() kedua-duanya diperlukan untuk operasi O(1), pelaksanaan pada dasarnya terpaksa menggunakan penimbal yang ditamatkan nol. Tambahan pula, keperluan nilai pulangan bagi kaedah operator[] juga bermakna bahawa aksara null yang ditamatkan mestilah dalam penimbal yang sama dengan elemen rentetan.

Atas ialah kandungan terperinci Adakah C 11 Memerlukan Rentetan Null-Terminated untuk c_str() dan data()?. 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