Maison >développement back-end >C++ >Comment puis-je lire de manière fiable des lignes à partir de fichiers texte avec des encodages de nouvelle ligne mixtes à l'aide de C ?

Comment puis-je lire de manière fiable des lignes à partir de fichiers texte avec des encodages de nouvelle ligne mixtes à l'aide de C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 20:47:12913parcourir

How Can I Reliably Read Lines from Text Files with Mixed Newline Encodings Using C  ?

Gestion des encodages de nouvelle ligne avec std::ifstream

Lorsque vous travaillez avec des fichiers texte, les nouvelles lignes codées de manière incohérente peuvent présenter des défis. Cet article aborde le problème de la gestion gracieuse des fins de ligne LF, CR et CRLF à l'aide de la classe std::ifstream.

std::istream& getline ( istream& is, string& str );

La fonction getline lit une ligne jusqu'à un caractère de nouvelle ligne. Cependant, il peut laisser des caractères CR ou CRLF résiduels en fin de ligne. Pour résoudre ce problème, l'article propose d'utiliser une fonction personnalisée appelée safeGetline :

std::istream& safeGetline(std::istream& is, std::string& t)
{
    // ...
}

La fonction safeGetline parcourt le flux d'entrée, vérifiant chaque caractère et détectant l'encodage de nouvelle ligne approprié. Il gère les trois caractères de nouvelle ligne courants : LF, CR et CRLF.

Pour tester la fonction safeGetline, l'article fournit un exemple de programme qui ouvre un fichier texte, lit ses lignes à l'aide de safeGetline et compte le nombre total. de lignes. Cela démontre la capacité de la fonction à gérer divers encodages de nouvelle ligne rencontrés dans les fichiers texte du monde réel.

En utilisant la fonction safeGetline, les programmeurs peuvent écrire du code qui prend en charge tous les formats d'encodage de nouvelle ligne courants, quelle que soit la plate-forme ou la source du fichier. fichiers texte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn