Datei Zeile für Zeile auslesen (CStdioFile::ReadString) und in CString schreiben!!
-
Hallo,
bin Student im Praxissemester, muss C++ Programmieren und hab das vorher noch nie gemacht.
Habe jetzt folgendes Problem:Ich möchte aus einer Datei Zeile für Zeile auslesen und in EINEN String kopieren.
Ich habs soweit geschafft, die erste Zeile auszulesen und in einen String zu kopieren, allerdings weiß ich nicht, wie ich weitere Zeilen auslese und dann einfach dran hänge.Könnte mir da jemand helfen?
Code bis jetzt sieht folgendermaßen aus:
CString csText, csTmp; CStdioFile file; file.Open(csPath,CFile::modeRead); file.ReadString(csTmp); csText += csTmp+"\n";
Wäre euch über jede Hilfe dankbar.
-
z.b: mit einer while oder for Schleife (keine if- schleife
). Must nur in dieser prüfen, ob das Dateiende erreicht ist und wenn nicht, mit Readstring die nächste Zeile auslesen und diese dann an deinen String ranhängen.
-
Ich denke so:
CString line; CString text; try { // Datei zum Lesen öffnen (Textmodus) CStdioFile file(_T("Dateiname.txt"), CFile::modeRead | CFile::typeText); // Zeilenweise auslesen while(file.ReadString(line)) { text += line; // + _T("\n") wenn Zeilenbruch erwünscht } } catch(CFileException& error) { //auf Fehler reagieren }
Hinweis: Das wäre dann ein MFC (Microsoft-Windows-spezifischer) Weg. Standard C++ würde die IO-Streams der STL benutzen (--> Google).
-
@Roger
Ohne dir nahetreten zu wollen, aber ich habe so das Gefühl, das es sich mal wieder um eine Semesteraufgabe handelt, die du grade für den Thread- Ersteller gelöst hast.arkas schrieb:
Hallo,
bin Student im Praxissemester, muss C++ Programmieren und hab das vorher noch nie gemacht.
..
-
Das habe ich anders gedeutet, da er gerade im Praxissemester ist und nun wahrscheinlich von der Firma vor eine Programmier-Aufgabe gesetzt wurde.
Auch wenn: Wenn jemand nicht lernen will, dann hat er selber schuld. Ich werde hier nicht versuchen jemanden zu erziehen...
-
Burkhi schrieb:
@Roger
Ohne dir nahetreten zu wollen, aber ich habe so das Gefühl, das es sich mal wieder um eine Semesteraufgabe handelt, die du grade für den Thread- Ersteller gelöst hast.Nett, dass von vorne herein mit so einer Motivation Thread-Erstellern, wie du sie nennst, geholfen wird.
Ich muss dich aber leider enttäuschen, da es keine Semesteraufgabe ist, sondern wie Roger richtig erkannt hat, nur eine kleine Aufgabe zwischendurch, eine Erweiterung fürn bestehendes Programm!!Roger Wilco schrieb:
Auch wenn: Wenn jemand nicht lernen will, dann hat er selber schuld. Ich werde hier nicht versuchen jemanden zu erziehen...
Hierzu... ich lerne hier, tag täglich von morgens bis abends, sitz teilweise stundenlang an kleinen Dingen, die ich einfach (noch) nicht kenne und am Ende hätte in 3min lösen können!
Und da ists manchmal doch recht entmutigend, sich jede Kleinigkeit stundenlang zu erarbeiten, wo man dann doch lieber einmal kurz frägt!Auf jeden fall, danke für die Hilfe, werds vielleicht leider erst morgen früh ausprobieren können, da ich gerade wieder an was anderem sitze!! Aber Rückmeldung kommt sicher!!
-
Und warum dieser unglaublicheUmstand alles Zeilenweise zu lesen. Warum dann nicht alles auf einmal:
CStdioFile f(pszFileName,CFile::modeRead|CFile::typeBinary); int nLength= static_cast<int>(f.GetLength()); f.Read(str.GetBufferSetLength(nLength),nLength);
-
Martin Richter schrieb:
Und warum dieser unglaublicheUmstand alles Zeilenweise zu lesen.
Kam daher, da es bestimmte Messwerte sind, die ich aus der Datei auslesen will und ich zuerst die Zeilen einzeln auslesen und dann Zeile für Zeile in Excel schreiben wollte!
Jetzt im nachhinein werd ich doch alles auslesen und nur einmal schreiben!!
Könnte mir also das zeilenweise auslesen jetzt sparen!
Naja... hinterher ist man immer schlauer!
Hat auf jeden Fall funktioniert!!Großes Dankeschön mal wieder für eure Hilfe!!!!!