Wie zu Lesen, die ganze Zeilen aus einer Datei (mit Leerzeichen)?
Ich bin mit STL. Ich brauche zum Lesen von Zeilen aus einer text-Datei. Wie Zeilen gelesen, bis die ersten \n
aber nicht, bis die ersten ' '
(Raum)?
Z.B. meine text-Datei enthält:
Hello world
Hey there
Wenn ich Schreibe wie:
ifstream file("FileWithGreetings.txt");
string str("");
file >> str;
dann str
enthalten nur "Hallo" aber ich brauche "Hallo Welt" (bis zum ersten \n
).
Dachte ich, ich könnte mit der Methode getline()
aber es erfordert, geben Sie die Anzahl der Symbole zu Lesen. In meinem Fall, ich weiß nicht, wie viele Symbole, die ich Lesen sollte.
InformationsquelleAutor Vladimir | 2013-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie getline:
InformationsquelleAutor David Rodríguez - dribeas
mit
getline
- Funktion ist eine option.oder
getc
zu Lesen, jeden char mit einer do-while-Schleifewenn die Datei besteht aus zahlen, dies wäre ein besserer Weg, um zu Lesen.
versuchen, durch Modifikation dieser Methode, wenn Ihre Datei besteht aus strings..
InformationsquelleAutor user322
Schlage ich vor:
Für die std::string, eine variable namens tun wird, und für wie lange, was Sie fühlen, geeignet oder benutzen Sie std::getline wie oben.
Zum verarbeiten der Zeile, verwenden Sie einfach einen iterator auf das std::string:
und Prozess der iterator ist Zeiger von Zeichen, bis Sie die \n und '', die Sie suchen.
InformationsquelleAutor user633658
Danke an alle die Menschen, die mir antwortete. Ich habe neue code für mein Programm, das funktioniert:
while (ifile)
, daifstream
überladen hatoperator bool()
um zu testen, ob es ok ist oder nicht. 2. Nicht in der Näheifile
ausdrücklich. Dies geschieht implizit inifstream
Destruktor gemäß RAII-Prinzip.3. Geben Sie nicht "Wert" für
std::string
- es ist nur überflüssig, string initialisiert wird mit "" in der default-Konstruktor. 4. Sie haben zwei tests hier:while
und inif
, während auf der einen genügt, istgetline
. Verschieben Sie es aufwhile
Zustand, und Sie nicht brauchen, um zu testenifile
überhaupt.InformationsquelleAutor Vladimir