Heim > Artikel > Backend-Entwicklung > Wie analysiert man Ganzzahlen aus einer Textdatei mit unterschiedlichen Zählungen effizient in einen Vektor in C?
Beim Versuch, Diagrammadjazenzinformationen aus einer Textdatei zu lesen, kann man auf Zeilen mit unterschiedlicher Anzahl von Ganzzahlen stoßen, die durch abgeschlossen werden 'N'. Die Verwendung der getline()-Methode zum individuellen Abrufen jeder Zeile stellt aufgrund der inkonsistenten Anzahl von Ganzzahlen die Herausforderung dar, jede Zeile genau zu analysieren. Es wird nach Strategien gesucht, um dieses Problem anzugehen und diese Werte effizient in einem Vektor zu speichern.
Der herkömmliche Ansatz erfordert die Iteration über jede von getline() gelesene Zeile und die Verwendung eines istringstream-Objekts zum Parsen jeder Zeile. Da ganze Zahlen sequentiell gelesen werden, können sie an einen Vektor angehängt werden, der dann nach Bedarf weiter manipuliert werden kann. Der folgende Code veranschaulicht diesen Ansatz:
<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>
Eine alternative Lösung beinhaltet eine einzeilige for-Schleife. Durch die Verwendung der Klasse istream_iterator können wir Werte direkt in einen Vektor einlesen und so den Bedarf an Zwischencontainern reduzieren. Außerdem wird eine Hilfsfunktion verwendet, um potenzielle Dangling-Referenzen zu verhindern, die durch 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>entstehen könnten
Das obige ist der detaillierte Inhalt vonWie analysiert man Ganzzahlen aus einer Textdatei mit unterschiedlichen Zählungen effizient in einen Vektor in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!