Ich bin in einem Tutorial, das Dateien vorstellt (wie man von \ zu Datei liest und schreibt)
Erstens ist dies keine Hausaufgabe, sondern nur allgemeine Hilfe, die ich suche.
Ich weiß, wie man ein Wort nach dem anderen liest, aber ich weiß nicht, wie man eine Zeile nach dem anderen liest oder wie man die gesamte Textdatei liest.
Was ist, wenn meine Datei 1000 Wörter enthält? Es ist nicht praktisch, jedes Wort zu lesen.
Meine Textdatei mit dem Namen (Lesen) enthält Folgendes:
Ich liebe es Spiele zu spielen Ich liebe es zu lesen Ich habe 2 Bücher
Folgendes habe ich bisher erreicht:
#include <iostream>
#include <fstream>
using namespace std;
int main (){
ifstream inFile;
inFile.open("Read.txt");
inFile >>
Gibt es eine Möglichkeit, die gesamte Datei auf einmal zu lesen, anstatt jede Zeile oder jedes Wort einzeln zu lesen?
Antworten:
Sie können verwenden
std::getline
:Beachten Sie auch, dass es besser ist, den Dateistream mit den Dateinamen im Konstruktor zu erstellen, als ihn explizit zu öffnen (dasselbe gilt für das Schließen, lassen Sie den Destruktor einfach die Arbeit erledigen).
Weitere Dokumentationen zu
std::string::getline()
finden Sie unter CPP Reference .Der wahrscheinlich einfachste Weg, eine ganze Textdatei zu lesen, besteht darin, diese abgerufenen Zeilen zu verketten.
quelle
while(getline(f, line)) { ...}
wirklich der empfohlene Weg, dies zu tun. Dies wird hier erklärt: gehrcke.de/2011/06/… --- dort finden Sie auch nützliche Ansätze für eine ordnungsgemäße Fehlerbehandlung.#include <iostream>
#include <iostream>
erforderlich? Es scheint mir das<fstream>
und<string>
sind genug. Wenn Sie meinenstd::getline
, ist es in<string>
, nicht in<iostream>
.Ich weiß, dass dies ein wirklich sehr alter Thread ist, aber ich möchte auch auf einen anderen Weg hinweisen, der eigentlich sehr einfach ist ... Dies ist ein Beispielcode:
quelle
Ich denke, Sie könnten die Funktion istream .read () verwenden. Sie können einfach eine Schleife mit einer angemessenen Blockgröße erstellen und direkt in den Speicherpuffer lesen und dann an einen beliebigen Speichercontainer (z. B. std :: vector) anhängen. Ich könnte ein Beispiel schreiben, aber ich bezweifle, dass Sie eine vollständige Lösung wollen. Bitte lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen.
quelle
Dazu kann man auch die in C ++ bereitgestellte Freopen-Funktion verwenden - http://www.cplusplus.com/reference/cstdio/freopen/ und die Datei Zeile für Zeile wie folgt lesen:
quelle
Eine andere Methode, die noch nicht erwähnt wurde, ist
std::vector
.Dann können Sie einfach über den Vektor iterieren und ändern / extrahieren, was Sie benötigen /
quelle
vector
ist ein unnötiger Schritt. Sie könnten über dieifstream
Verwendung iterierenstd::istream_iterator<std::string>(inFile)
.