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

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-08 14:37:13516semak imbas

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()].

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:
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