Rumah > pembangunan bahagian belakang > C++ > Adakah `std::string` C 11 Dijamin Tidak Ditamatkan?

Adakah `std::string` C 11 Dijamin Tidak Ditamatkan?

Mary-Kate Olsen
Lepaskan: 2024-12-08 14:37:13
asal
585 orang telah melayarinya

Is C  11's `std::string` Guaranteed to Be Null-Terminated?

std::string Penamatan Null dalam C 11

Dalam C 11, tingkah laku std::string berkenaan penamatan null kekal sebagai topik penting. Seperti yang dibincangkan dalam perbincangan sebelum ini, Herb Sutter mencadangkan mengetatkan keperluan dalam C 0x untuk menguatkuasakan penamatan batal dan berkemungkinan melarang pelaksanaan salin atas tulis atas sebab serentak.

Draf akhir C 11 memang menerima pakai cadangan ini. Menurut [string.accessors] p1, std::basic_string::c_str():

Returns: A pointer p such that p + i == &operator[](i) for each i in [0,size()].
Salin selepas log masuk

Keperluan penting ini membayangkan bahawa diberikan rentetan s, penunjuk yang dikembalikan oleh s.c_str() mestilah sama ke alamat aksara awal dalam rentetan (&s[0]). Oleh itu, kini selamat untuk menggunakan &str[0] untuk mengakses tatasusunan aksara asas std::string. Tingkah laku ini memastikan penamatan nol yang konsisten dan boleh dipercayai, menjadikannya sesuai untuk keserasian dengan rentetan penamatan nol gaya C.

Atas ialah kandungan terperinci Adakah `std::string` C 11 Dijamin Tidak Ditamatkan?. 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