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!