Datei auslesen
-
Hallo,
mit folgender Schleife lese ich den Inhalt einer Datei aus:
TFileStream* f=NULL; char szBuffer[2000]; //Chararray für Inhalt der pos-Datei AnsiString as; f=new TFileStream(posdatei,fmOpenRead); while(f->Read(szBuffer, 1500)) { std::string text = szBuffer; //Umwandlung Chararray in String } delete f; f=NULL;
Die Anzahl der Zeilen in der Datei variiert. Wie kann ich das jetzt so anpassen, dass immer alle Zeilen bis zum Dateiende gelesen werden? Geht das irgendwie mit eof() ? Außerdem möchte ich jede einzelne Zeile in eine Combobox hinzufügen. Für Hilfe (am besten mit ein paar Codeschnipseln) wäre ich sehr dankbar! Ich verwende den Borland Builder 6.
-
Hallo
Falls es um eine Textdatei geht, verwende einfach TStringList mit desen Methode LoadFromFile. Dann werden dir alle Zeilen automatisch aufgesplittet.
Falls du wirklich mit einem Stream in std::string lesen willst, dann verwende lieber std::fstream. Dann kannst du mit std::getline auch Zeile für Zeile auslesen. Mehr dazu findest du im C++ Forum, vor allem in der dortigen FAQ unter dem Titel "Dateien und Ströme".
bis bald
akari
-
Vielen Dank! Habs jetzt mit fstream und getline() gelöst.
-
Hab noch ein kleines Problem, was sicherlich einfach lösbar ist aber ich kriegs nicht auf die Reihe
ich öffne mit
fstream f("C:\\Test\\test.txt", ios::out | ios::in);
die Datei. Nun möchte ich den Pfad zur Datei aus einer Editbox holen und an fstream übergeben. Das hab ich versucht mit:
AnsiString aspath; string strpath; aspath = Edit1->Text; strpath = aspath.c_str();
Und wenn ich das dann an fstream übergebe, bekomme ich den Fehler:
"E2285 Keine übereinstimmung für 'fstream::basic(string,enum)' gefunden"
Was mach ich falsch?
-
Hallo
std::string brauchst du nicht. std::fstream erwartet einfach einen const char*, undd en kannst du auch direkt aus AnsiString holen.
AnsiString aspath; fstream f(aspath.c_str(), ios::out | ios::in);
bis bald
akari
-
danke!