Memahami Perbezaan antara c_str() dan data() dalam Rentetan STL
Perbezaan antara c_str() dan data() untuk STL rentetan sering menimbulkan persoalan kerana pelaksanaan yang berbeza-beza. Walaupun sesetengah pihak mendakwa bahawa c_str() menjamin penamatan null dan data() tidak, gelagat sebenar mungkin berbeza.
Penamatan Null lwn. Penamatan Bukan Null
Secara teori, c_str() mengembalikan rentetan yang ditamatkan nol, bermakna ia termasuk aksara nol tambahan pada penghujungnya (bersamaan dengan ' ' dalam C). Ini penting untuk antara muka dengan fungsi C tradisional yang mengharapkan rentetan ditamatkan dengan cara ini. Sebaliknya, data() mengembalikan penunjuk kepada tatasusunan aksara asas tetapi tidak semestinya menjamin penamatan batal.
Butiran Pelaksanaan
Walau bagaimanapun, dalam amalan, beberapa pelaksanaan laksana data() dengan hanya memanggil c_str() secara dalaman. Dalam kes sedemikian, kedua-dua fungsi berkesan berkelakuan sama. Adalah penting untuk merujuk dokumentasi pelaksanaan khusus untuk penjelasan.
Bila Menggunakan Fungsi Mana
Secara amnya, peraturan praktikal ialah:
C 11 and Beyond
Dalam C 11 dan seterusnya, perubahan standardisasi telah diperkenalkan: data() kini diperlukan untuk mengembalikan rentetan yang ditamatkan nol, menjadikannya bersamaan dengan c_str() dalam fungsi.
Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan c_str() vs. data() untuk String STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!