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
Freigeben: 2024-11-02 18:20:29
Original
796 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage