Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membuat Kod C Saya Mengendalikan Penghujung Baris Baharu Berbeza dengan Teguh dalam Fail Teks?

Bagaimanakah Saya Boleh Membuat Kod C Saya Mengendalikan Penghujung Baris Baharu Berbeza dengan Teguh dalam Fail Teks?

DDD
Lepaskan: 2024-12-05 04:34:09
asal
612 orang telah melayarinya

How Can I Make My C   Code Robustly Handle Different Newline Endings in Text Files?

Mendapat std :: ifstream dengan Anggun Mengendalikan Pelbagai Pengakhiran Baris Baharu

Pengenalan

Apabila bekerja dengan fail teks dalam C , adalah penting untuk mengendalikan pengekodan baris baharu yang berbeza dengan anggun. Artikel ini meneroka mekanisme standard C dan amalan terbaik untuk mengendalikan aksara baris baharu yang pelbagai dan menyediakan penyelesaian yang komprehensif.

Cabaran: Pengakhiran Baris Baharu Tidak Konsisten

Secara khusus, persoalan itu menimbulkan kebimbangan tingkah laku istream& getline ( istream& is, string& str ); apabila menghadapi pelbagai pengekodan baris baharu. Objektifnya adalah untuk mengelakkan pengubahsuaian yang menyusahkan pengguna sambil memastikan keserasian dengan format fail teks yang pelbagai.

Penghadan Standard C

Sementara masa jalan C secara teorinya harus mengendalikan baris baharu khusus platform konvensyen, ia tidak boleh dipercayai untuk pertukaran data merentas platform. Oleh itu, penyelesaian yang lebih mantap diperlukan.

Penyelesaian Tersuai: Fungsi safeGetline()

Untuk menangani cabaran ini, fungsi tersuai dipanggil safeGetline() diperkenalkan.

std::istream& safeGetline(std::istream& is, std::string& t)
{
    t.clear();

    // ... Implementation omitted for brevity ...

    return is;
}
Salin selepas log masuk

Fungsi ini membaca aksara secara berulang daripada aliran input dan mengendalikan ketiga-tiga pengekodan baris baharu biasa ("r", "n", dan "rn") sewajarnya. Ia juga memastikan garisan kosong dikendalikan dengan betul.

Program Ujian

Program ujian disediakan untuk menunjukkan kefungsian fungsi safeGetline() .

int main()
{
    // ... Implementation omitted for brevity ...

    int n = 0;
    std::string t;
    while(!safeGetline(ifs, t).eof())
        ++n;
    std::cout << "The file contains " << n << " lines." << std::endl;

    return EXIT_SUCCESS;
}
Salin selepas log masuk

Atur cara ini membaca fail teks, mengira bilangan baris sambil mengendalikan semua baris baharu dengan anggun pengekodan.

Kesimpulan

Fungsi safeGetline() menyediakan penyelesaian yang teguh untuk mengendalikan pengakhiran baris baharu yang pelbagai dalam aliran input C. Ia membolehkan pembangun menulis kod yang serasi dengan pelbagai format dan platform fail teks, meminimumkan kesulitan untuk pengguna dan memastikan pemprosesan data yang betul.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Kod C Saya Mengendalikan Penghujung Baris Baharu Berbeza dengan Teguh dalam Fail Teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan