Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membuat Kod C Saya Mengendalikan Penghujung Baris Baharu Berbeza dengan Teguh dalam Fail Teks?
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; }
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; }
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!