Rumah > pembangunan bahagian belakang > C++ > Adakah std::string Sentiasa Ditamatkan Null dalam C 11?

Adakah std::string Sentiasa Ditamatkan Null dalam C 11?

DDD
Lepaskan: 2024-12-17 08:59:23
asal
895 orang telah melayarinya

Is std::string Always Null-Terminated in C  11?

Adakah std::string Ditamatkan Null dalam C 11?

Pada tahun 2008, Herb Sutter mencadangkan pelaksanaan rentetan mengetatkan dalam C 0x untuk memerlukan penamatan batal. Walau bagaimanapun, piawaian C 11 termasuk pendekatan yang berbeza:

Ya, std::rentetan sentiasa ditamatkan nol dalam C 11.

Piawaian menyatakan bahawa penunjuk dikembalikan oleh std::basic_string::c_str() akan sama dengan alamat aksara awal dalam rentetan (&s[0]). Oleh itu, selamat digunakan &str[0] dalam C 11.

Akibat:

  • Menggunakan &str[0] kini menyediakan cara yang selamat dan cekap untuk mengakses aksara rentetan asas.
  • Jaminan penamatan batal memudahkan kesalingoperasian dengan API gaya C dan struktur data.
  • Walau bagaimanapun, ini tidak membayangkan bahawa std::string ialah pelaksanaan copy-on-write. Pelaksanaan masih boleh memilih untuk mengoptimumkan prestasi melalui salin atas tulis atau strategi lain yang mengekalkan penamatan batal.

Atas ialah kandungan terperinci Adakah std::string Sentiasa Ditamatkan Null dalam C 11?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan