Maison  >  Article  >  développement back-end  >  Comment analyser des entiers à partir d'un fichier texte en C avec ifstream ?

Comment analyser des entiers à partir d'un fichier texte en C avec ifstream ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 13:18:29274parcourir

How to Parse Integers from a Text File in C   with ifstream?

Analyse d'entiers à partir d'un fichier texte en C à l'aide d'ifstream

Dans le domaine de la programmation, travailler avec des fichiers est une nécessité courante. L'une de ces tâches consiste à lire des entiers à partir d'un fichier texte pour l'analyse de données ou la construction de graphiques. Pourtant, face à un fichier texte contenant un nombre inconnu de lignes, chacune composée d'un nombre variable d'entiers, l'analyse devient un défi.

Pour résoudre ce problème, nous pouvons utiliser la fidèle classe ifstream et std : Fonction :getline() pour lire les lignes du fichier texte. Cependant, l’analyse des lignes pose un nouvel obstacle. Pour surmonter ce problème, examinons deux approches efficaces :

Utilisation de StringStream et While Loop :

Cette méthode utilise le constructeur istringstream pour analyser une ligne. Il lit les entiers dans une boucle while, les ajoutant à un vecteur jusqu'à ce qu'une nouvelle ligne soit rencontrée :

<code class="cpp">while (std::getline(infile, line))
{
  std::istringstream iss(line);
  int n;
  std::vector<int> v;

  while (iss >> n)
  {
    v.push_back(n);
  }

  // Utilize the parsed integer vector 'v' for your desired purpose
}</code>

Solution sur une ligne avec std::move:

Pour une approche plus rationalisée, nous pouvons utiliser une combinaison de std::move() et d'une boucle for :

<code class="cpp">for (std::string line;
     std::getline(std::cin, line);
     vv.push_back(std::vector<int>(std::istream_iterator<int>(std::stay(std::istringstream(line))),
                                 std::istream_iterator<int>()))
    ) { }</code>

Cette solution utilise la fonction std::stay() pour conserver la propriété du flux d'entrée, permettant l'utilisation dans la boucle for. Il parcourt les lignes, en utilisant std::istream_iterator pour analyser les entiers en vecteur>.

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