Maison >développement back-end >C++ >Comment analyser efficacement des entiers à partir d'un fichier texte avec des comptes variables dans un vecteur en C ?
Lorsque vous essayez de lire des informations de contiguïté de graphiques à partir d'un fichier texte, vous pouvez rencontrer des lignes avec un nombre variable d'entiers terminés par 'n'. Utiliser la méthode getline() pour récupérer chaque ligne individuellement pose le défi d'analyser avec précision chaque ligne en raison de son nombre incohérent d'entiers. Des stratégies sont recherchées pour résoudre ce problème et stocker efficacement ces valeurs dans un vecteur.
L'approche conventionnelle nécessite une itération sur chaque ligne lue par getline() et l'utilisation d'un objet istringstream pour analyser chaque ligne. Comme les entiers sont lus séquentiellement, ils peuvent être ajoutés à un vecteur, qui peut ensuite être manipulé à volonté. Le code suivant illustre cette approche :
<code class="cpp">#include <fstream> #include <sstream> #include <string> #include <vector> int main() { std::ifstream infile("thefile.txt"); std::string line; while (std::getline(infile, line)) { std::istringstream iss(line); int n; std::vector<int> v; while (iss >> n) { v.push_back(n); } // Do something with v } }</code>
Une solution alternative implique une boucle for sur une seule ligne. En utilisant la classe istream_iterator, nous pouvons lire les valeurs directement dans un vecteur, réduisant ainsi le besoin de conteneurs intermédiaires. Une fonction auxiliaire est également utilisée pour éviter les références potentielles pendantes qui pourraient résulter de std::move.
<code class="cpp">#include <fstream> #include <string> #include <vector> int main() { std::vector<std::vector<int>> vv; 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>
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!