Rumah > Artikel > pembangunan bahagian belakang > Bagaimana Cara Selamat Menukar Antara aliran rentetan, rentetan dan aksara* dalam C ?
Menavigasi aliran rentetan, rentetan dan char* Penukaran
Apabila bekerja dengan rentetan dalam C , pengaturcara sering menghadapi kekeliruan apabila menukar antara aliran rentetan, rentetan , dan char*. Artikel ini menyelidiki selok-belok penukaran ini, membongkar salah tanggapan dan menyediakan penyelesaian praktikal.
Memahami Sepanjang Hayat stringstream.str().c_str()
Intinya isu ini terletak pada pemahaman jangka hayat rentetan yang dikembalikan oleh stringstream.str().c_str(). Objek rentetan sementara ini dimusnahkan pada penghujung ungkapan, menjadikan sebarang penunjuk yang diperoleh daripadanya (seperti const char* cstr2) tidak sah.
Menyelesaikan Kekeliruan
Kepada selesaikan isu ini, elakkan memberikan stringstream.str().c_str() terus kepada const char*. Sebaliknya, buat salinan rentetan sementara dalam objek rentetan lain dan kemudian dapatkan rentetan C daripada itu:
const std::string tmp = stringstream.str(); const char* cstr = tmp.c_str();
Sebagai alternatif, hadkan hayat rentetan sementara dengan menggunakannya dalam ungkapan:
use_c_str( stringstream.str().c_str() );
Untuk kecekapan dan kejelasan, ikat sementara pada rujukan const:
{ const std::string& tmp = stringstream.str(); const char* cstr = tmp.c_str(); }
Atas ialah kandungan terperinci Bagaimana Cara Selamat Menukar Antara aliran rentetan, rentetan dan aksara* dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!