Cara Menulis std::string ke Fail Tanpa Melihat Kotak
Soalan:
Apabila menulis pembolehubah std::string ke fail menggunakan kaedah write(), fail yang terhasil memaparkan kotak dan bukannya rentetan yang dijangkakan. Adakah std::string sesuai untuk senario ini, atau patutkah pendekatan alternatif dipertimbangkan?
Jawapan:
std::string memang sesuai untuk menulis ke fail, tetapi kaedah write() bertujuan untuk data binari. Untuk menulis rentetan dalam format teks, pertimbangkan untuk menggunakan objek ofstream. Berikut ialah contoh:
#include <fstream> #include <string> #include <iostream> int main() { std::string name; std::cout << "Enter your name: "; std::cin >> name; std::ofstream out("name.txt"); out << name; // Writes the string to the file in text format out.close(); return 0; }
Untuk penulisan binari, gunakan kaedah c_str() untuk mendapatkan data aksara asas dan tuliskannya pada fail:
#include <fstream> #include <string> #include <iostream> int main() { std::string password; std::cout << "Enter your password: "; std::cin >> password; std::ofstream out("password.bin", std::ios::binary); out.write(password.c_str(), password.size()); // Writes the password in binary format out.close(); return 0; }
Atas ialah kandungan terperinci Mengapakah Menulis std::string pada Fail Menghasilkan Kotak Daripada Teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!