Heim >Backend-Entwicklung >C++ >Wie liest man mithilfe von C ifstream effizient Ganzzahlen aus einer Textdatei mit unterschiedlichen Ganzzahlzahlen?

Wie liest man mithilfe von C ifstream effizient Ganzzahlen aus einer Textdatei mit unterschiedlichen Ganzzahlzahlen?

DDD
DDDOriginal
2024-11-02 18:20:29779Durchsuche

How to Efficiently Read Integers from a Text File with Varying Integer Counts Using C   ifstream?

Ganzzahlen aus einer Textdatei mit C ifstream lesen

Das Abrufen und Speichern von Graph-Adjazenzinformationen aus einer Textdatei in einem Vektor stellt eine Herausforderung dar, wenn Umgang mit Zeilen mit variabler Ganzzahlzahl. Hier ist eine umfassende Lösung mit dem ifstream von C:

Der traditionelle Ansatz besteht darin, jede Zeile mit getline() zu lesen und einen Eingabe-String-Stream zum Parsen der Zeile zu verwenden. Diese Technik eignet sich gut für Zeilen mit einer konsistenten Anzahl von Ganzzahlen.

<code class="cpp">#include <fstream>
#include <sstream>
#include <vector>

std::ifstream infile("text_file.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);
  }

  // Process the vector v
}</code>

Wenn Sie jedoch Zeilen mit unterschiedlichen Ganzzahlzahlen haben, gibt es eine einzeilige Lösung, die eine Schleife und die Redewendung „bleiben“ nutzt , mit freundlicher Genehmigung von Luc Danton:

<code class="cpp">#include <sstream>
#include <iterator>
#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::move(std::istringstream(line))),
                                     std::istream_iterator<int>()))
       );

  // Process the vector of vectors vv
}</code>

In diesem Snippet stellt die Redewendung „stay“ sicher, dass die bereitgestellte L-Wert-Referenz nach der Verschiebung gültig bleibt. Der Umzug ist aus Effizienzgründen notwendig, da er unnötiges Kopieren von Zeichen vermeidet.

Diese Lösungen bieten effiziente und vielseitige Methoden zum Extrahieren von Ganzzahlen aus einer Textdatei und zum Speichern dieser in einem Vektor, unabhängig davon, ob die Zeilen ein konsistentes oder haben unterschiedliche Anzahl von ganzen Zahlen.

Das obige ist der detaillierte Inhalt vonWie liest man mithilfe von C ifstream effizient Ganzzahlen aus einer Textdatei mit unterschiedlichen Ganzzahlzahlen?. 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