Maison > développement back-end > C++ > Comment puis-je faire en sorte que mon code C gère de manière robuste différentes fins de nouvelle ligne dans les fichiers texte ?

Comment puis-je faire en sorte que mon code C gère de manière robuste différentes fins de nouvelle ligne dans les fichiers texte ?

DDD
Libérer: 2024-12-05 04:34:09
original
612 Les gens l'ont consulté

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

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal