Maison >développement back-end >C++ >Comment puis-je lire efficacement l'intégralité du contenu d'un fichier dans une chaîne en C ?

Comment puis-je lire efficacement l'intégralité du contenu d'un fichier dans une chaîne en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 06:45:29780parcourir

How can I efficiently read the entire contents of a file into a string in C  ?

Lire efficacement le contenu d'un fichier dans une chaîne en C

En C, contrairement aux langages de script tels que Perl, lire l'intégralité du contenu d'un fichier dans une chaîne en une seule opération n’est pas directement disponible. Cependant, il existe des méthodes efficaces pour obtenir cette fonctionnalité.

Pour lire le contenu d'un fichier dans une chaîne, nous pouvons utiliser les capacités de gestion des entrées de fichiers de C. Voici une solution efficace :

<code class="cpp">#include <fstream>
#include <string>

int main(int argc, char** argv)
{
  std::ifstream ifs("myfile.txt");
  std::string content( (std::istreambuf_iterator<char>(ifs) ),
                       (std::istreambuf_iterator<char>()    ) );

  return 0;
}</code>

Le code utilise un flux de fichier d'entrée pour lire le contenu du fichier nommé "myfile.txt" et le stocke dans une variable de chaîne nommée "content". L'expression utilisée pour attribuer le contenu du fichier à la chaîne est :

<code class="cpp">std::string content( (std::istreambuf_iterator<char>(ifs) ),
                   (std::istreambuf_iterator<char>()    ) );</code>

Cette expression utilise des itérateurs pour lire caractère par caractère à partir du flux du fichier d'entrée et construit la chaîne. Le premier itérateur est initialisé avec le flux du fichier d'entrée, tandis que le deuxième itérateur est un itérateur de "fin" construit par défaut, indiquant la fin du fichier.

Vous pouvez également utiliser le code suivant pour écraser la valeur de une variable chaîne existante :

<code class="cpp">std::string content;
content.assign( (std::istreambuf_iterator<char>(ifs) ),
                (std::istreambuf_iterator<char>()    ) );</code>

Ce code écrase la valeur de la variable chaîne existante "content" par le contenu du fichier.

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