Daten einer Datei Zeilenweise auslesen
-
Hallo zusammen,
ich bin neu im Gebiet C++ Programmierung. Ich komme aus der Java-Welt. Diese Zeiger-Sachen machen mich momentan fertig.
Meine Frage lautet: Wie kann ich mit C++ eine Textdatei Zeilenweise lesen und die Zeilen als String speichern, damit ich später daraus Substring machen kann, oder sie spliten kann?
In Java könnte sowas folgenderweise aussehen:
BufferedReader br = null; String line = ""; try { br = new BufferedReader(new FileReader(new File(FileName))); line = br.readLine().trim(); while (line != null) { if (line.toLowerCase().trim().startsWith("...") ..... ........ ........ } }Danke voraus
Gruß
-
#include <fstream> #include <string> #include <algorithm> int main() { std::ifstream file("blub.txt"); while( !file.eof() ) { std::string line; std::getline(file, line); std::transform(line.begin(), line.end(), line.begin(), tolower); // do smth with line } return 0; }so in der art z.b.
-
Das geht (ungefähr) so:
#include <iostream> #include <string> #include <list> #include <fstream> using namespace std; int main(void) { ifstream theFile("myFile.txt"); string currentLine; list<string> allLines; while(!theFile.eof()) { getline(theFile, currentLine); allLines.push_back(currentLine); } //über alle eingelesenen Zeilen iterieren for(list<string>::iterator it = allLines.begin(); it != allLines.end(); ++it) { cout << *it << endl; //irgendwas mit der Zeile machen (z.B. ausgeben) } return 0; }Eigentlich sollte das aber in jedem guten C++ Buch erklärt werden.
Felix
-
Hört bitte auf mit euren while(!file.eof()) Schleifen!
-
@Phoemuex: Bah!
#include <fstream> #include <string> #include <algorithm> #include <cctype> int main() { std::ifstream file_stream("test.txt"); if (!file_stream){ std::cerr << "FEHLER: Datei konnte nicht geöffnet werden!" << std::endl; std::cin.get(); return -1; } std::string line; while (std::getline(file_stream, line)) { std::transform(line.begin(), line.end(), line.begin(), std::tolower); /* use var "line" of type "std::string" for something */ } std::cin.get(); }
-
....... schrieb:
Hört bitte auf mit euren while(!file.eof()) Schleifen!
Wieso?

-
Weil das leicht zu Fehlern führt. Wird erst gesetzt, wenn der letzte Lesevorgang fehlgeschlagen ist. Es ist dann aber schon einer fehlgeschlagen.
-
Ich bin begeistert von dem Forum.
Ich hätte nicht gedacht, dass so viele Antworten auf einmal kommen werden.
Also, danke viel mal. Und weiter so.
Gruß