Memahami mengapa c_str() pada Fungsi String-Returning Memerlukan Pembolehubah Perantaraan
Dalam C , memanggil c_str() pada rentetan ke mendapatkan penunjuk const char* boleh menjadi masalah jika rentetan dikembalikan terus daripada fungsi. Ini kerana rentetan yang dikembalikan ialah objek sementara dan hayatnya tamat sebaik sahaja fungsi itu keluar.
Pertimbangkan kod berikut:
const char* charArray = SomeFunction().c_str();
Dalam senario ini, charArray memegang penunjuk ke objek sementara dikembalikan oleh SomeFunction(). Apabila fungsi kembali, jangka hayat objek sementara berakhir, meninggalkan charArray berjuntai. Akibatnya, charArray menyimpan nilai sampah.
Untuk menyelesaikan isu ini, pembolehubah perantaraan boleh digunakan untuk menyimpan rentetan yang dikembalikan sebelum memanggil c_str(). Ini memastikan rentetan wujud cukup lama untuk c_str() mendapatkan penunjuk yang sah.
string str = SomeFunction(); const char* strConverted = str.c_str(); // strConverted stores the string's value properly
Dalam kes ini, str ialah pembolehubah setempat dengan jangka hayat yang lebih lama daripada objek pulangan sementara fungsi. Apabila c_str() dipanggil pada str, ia mengembalikan penunjuk ke lokasi memori yang sah rentetan, yang kemudiannya disimpan dalam strConverted.
Oleh itu, adalah penting untuk menggunakan pembolehubah perantaraan apabila memanggil c_str() pada rentetan dikembalikan daripada fungsi, kerana ia memastikan ketersediaan data rentetan yang sah.
Atas ialah kandungan terperinci Mengapa Memanggil `c_str()` pada Fungsi Mengembalikan Rentetan Memerlukan Pembolehubah Perantaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!