Rumah > pembangunan bahagian belakang > C++ > Mengapakah Menulis std::string pada Fail Menghasilkan Kotak Daripada Teks?

Mengapakah Menulis std::string pada Fail Menghasilkan Kotak Daripada Teks?

Linda Hamilton
Lepaskan: 2024-11-26 21:00:17
asal
1100 orang telah melayarinya

Why Does Writing a std::string to a File Produce Boxes Instead of Text?

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan