Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: **Terus dan Berfokus:** * **Mengapa Memanggil `std::string.c_str()` pada Rentetan Sementara Membawa kepada Gelagat Tidak Ditakrifkan?** * **

Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: **Terus dan Berfokus:** * **Mengapa Memanggil `std::string.c_str()` pada Rentetan Sementara Membawa kepada Gelagat Tidak Ditakrifkan?** * **

DDD
DDDasal
2024-10-26 10:25:03439semak imbas

Here are a few question-based titles that fit the content of your article:

**Direct and Focused:**

* **Why Does Calling `std::string.c_str()` on a Temporary String Lead to Undefined Behavior?**
* **How to Safely Use `std::string.c_str()` with Temporary

Memanggil std::string.c_str() pada Rentetan Sementara

Dalam C , objek sementara dimusnahkan pada penghujung ungkapan penuh di mana ia dicipta. Dalam kod yang diberikan, baris const char* cStr = getString().c_str(); mencipta objek std::string sementara daripada nilai pulangan getString(). Walau bagaimanapun, sementara ini dimusnahkan sebelum penuding cStr boleh menggunakannya.

Untuk membetulkannya, anda boleh sama ada menyimpan sementara dalam pembolehubah bernama atau mengikatnya pada rujukan-nilai const atau rujukan-nilai. Contohnya:

<code class="cpp">std::string s = getString();      // Extended lifetime
const char* cStr1 = s.c_str();
std::cout << cStr1 << std::endl; // Safe

const std::string& s2 = getString();  // Const lvalue-reference
const char* cStr2 = s2.c_str();
std::cout << cStr2 << std::endl; // Safe</code>

Sebagai alternatif, anda boleh menggunakan penunjuk sebelum yang sementara dimusnahkan:

<code class="cpp">std::cout << getString().c_str() << std::endl;  // Temporary used immediately</code>

Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: **Terus dan Berfokus:** * **Mengapa Memanggil `std::string.c_str()` pada Rentetan Sementara Membawa kepada Gelagat Tidak Ditakrifkan?** * **. 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