zeilenweise einlesen
-
Hi,
ich habe ein Problem beim zeilenweisen Einlesen.
Bis jetzt habe ich folgenden Code verwendet:std::ifstream file(dateiname.c_str(), std::ios::in | std::ios::binary); char zeile[80]; // In dieses Array wird die Datei eingelesen int i = 0; while(file.getline(zeile, 80)) // Datei in Array Zeile einlesen { datei_vector_intern.push_back(zeile); // Zeile wird in Vector-Container angefuegt ++i; }
Doch nun möchte ich auch Dateien einlesen, deren Zeilen länger als 80 Zeichen sind. Natürlich könnte ich das Array einfach größer machen, aber es geht doch bestimmt auch dynamisch?
Kann mir jemand einen Tipp geben, wie ich das geschickt lösen könnte?Vielen Dank
-
char zeile[80];
=>
std::string zeile;
-
Das ist alles? Und das Zeilenndezeichen erkennt getline automatisch? Ich probiere es mal aus, ist ja eigentlich offensichtlich dann!
Vielen Dank
-
getline kann das wohl nur mit (char, Laenge).
Gibt es denn keinen Befehl, der zeilenweise einliest und dabei das Zeilen-Endezeichen beachtet?
Was sind enn ansonsten die Zeilenendezeichen?
\n? Oder gibt es da noch andere?Danke Euch
-
std::ios::binary <=> Zeilenende
Das ist ja wohl ein Widerspruch.
-
Bis jetzt habe ich das Zeilenende ja auch noch gar nicht abgefragt, weil ich mit festem Array gearbeitet habe!
-
Wenn du mit std::strings arbeitest, musst du die globale Funktion getline(stream, std::string) verwenden.
Bezogen auf dein Beispiel:
... while(getline(file, zeile)) // Datei in Array Zeile einlesen ...
Caipi
-
Super,
vielen Dank.
Probiere ich gleich aus!