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
Libérer: 2024-10-27 06:45:29
original
779 Les gens l'ont consulté

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

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

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

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal