Heim >Backend-Entwicklung >C++ >Wie analysiert man Ganzzahlen aus einer Textdatei mit unterschiedlichen Zählungen effizient in einen Vektor in C?

Wie analysiert man Ganzzahlen aus einer Textdatei mit unterschiedlichen Zählungen effizient in einen Vektor in C?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 19:54:30528Durchsuche

How to Efficiently Parse Integers from a Text File with Varying Counts into a Vector in C  ?

Ganzzahlen aus einer Textdatei mit C ifstream lesen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn