Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menulis Rentetan dengan Betul ke Fail dalam C?

Bagaimanakah Saya Boleh Menulis Rentetan dengan Betul ke Fail dalam C?

DDD
DDDasal
2024-11-26 15:27:10670semak imbas

How Can I Correctly Write Strings to Files in C  ?

Menulis Rentetan ke Fail dalam C

Apabila mengendalikan input pengguna dalam bentuk rentetan, adalah perkara biasa untuk menulisnya ke fail untuk simpanan. Walau bagaimanapun, percubaan untuk berbuat demikian menggunakan kaedah write() ofstream boleh membawa kepada hasil yang tidak dijangka.

std::string dan Penulisan Fail

Adalah penting untuk memahami bahawa std::string ialah struktur data kompleks yang menyimpan nilai rentetan dan panjangnya secara dalaman. Apabila menggunakan write() dengan std::string, ia sebenarnya menulis perwakilan dalaman ini ke fail. Data perduaan ini tidak mungkin dipaparkan dengan betul sebagai teks apabila fail dibuka.

Menggunakan ofstream untuk Fail Teks

Untuk menulis plaintext kepada fail, pendekatan yang disyorkan ialah menggunakan objek ofstream , yang bertindak seperti std::cout untuk menulis ke fail. Contoh kod berikut menggambarkan pendekatan ini:

#include <fstream>
#include <iostream>

int main() {
    std::string studentName;
    std::cout << "Enter your name: ";
    std::cin >> studentName;

    std::ofstream outFile("output.txt");
    outFile << studentName;
    outFile.close();

    return 0;
}

Menulis Data Perduaan ke Fail

Jika anda perlu menulis perwakilan binari sebenar rentetan, dan bukannya nilai plaintextnya, anda boleh menggunakan string::c_str() untuk mendapatkan semula penunjuk kepada data mentah dan panjangnya untuk write(). Coretan berikut menunjukkan perkara ini:

write.write(studentPassword.c_str(), studentPassword.size());

Dengan menggunakan teknik ini, anda boleh menulis kedua-dua rentetan teks biasa dan data binari pada fail, bergantung pada keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menulis Rentetan dengan Betul ke Fail dalam C?. 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