Obtenir std :: ifstream pour gérer gracieusement diverses fins de nouvelle ligne
Introduction
Lorsque vous travaillez avec les fichiers texte en C , il est crucial de gérer avec élégance les différents encodages de nouvelle ligne. Cet article explore les mécanismes C standard et les meilleures pratiques pour gérer divers caractères de nouvelle ligne et fournit une solution complète.
Défi : fins de nouvelle ligne incohérentes
Plus précisément, la question a soulevé des inquiétudes. le comportement d'istream& getline ( istream& is, string& str ); lorsque vous rencontrez divers encodages de nouvelle ligne. L'objectif est d'éviter les modifications gênantes pour les utilisateurs tout en garantissant la compatibilité avec divers formats de fichiers texte.
Limites du standard C
Alors que le runtime C devrait théoriquement gérer les nouvelles lignes spécifiques à la plate-forme conventions, il n'est pas fiable pour l'échange de données multiplateforme. Par conséquent, une solution plus robuste est nécessaire.
Solution personnalisée : fonction safeGetline()
Pour relever ce défi, une fonction personnalisée appelée safeGetline() est introduite.
std::istream& safeGetline(std::istream& is, std::string& t) { t.clear(); // ... Implementation omitted for brevity ... return is; }
Cette fonction lit de manière itérative les caractères du flux d'entrée et gère les trois encodages de nouvelle ligne courants ("r", "n" et "rn") par conséquent. Il garantit également que les lignes vides sont traitées correctement.
Programme de test
Un programme de test est fourni pour démontrer la fonctionnalité de la fonction 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; }
Ce programme lit un fichier texte, compte le nombre de lignes tout en gérant gracieusement toutes les nouvelles lignes encodages.
Conclusion
La fonction safeGetline() fournit une solution robuste pour gérer diverses fins de nouvelle ligne dans les flux d'entrée C. Il permet aux développeurs d'écrire du code compatible avec différents formats et plates-formes de fichiers texte, minimisant ainsi les désagréments pour les utilisateurs et garantissant le traitement correct des données.
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!