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
804 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!

sumber:php.cn
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