Text mit Zeilenumbruch in String einlesen
-
Hallo ich muss eine Datei mit Zeilenumbruch in ein String einlesen.
Dieser Code packt nur eine Zeile (getline):
#include <iostream> #include <fstream> #include <string> using namespace std; int main () { ifstream f2("/home/marvin/Arbeitsfläche/index2"); string a ; if (f2.fail () ==true) { cout << "Datei ERROR"; } getline (f2,a); cout << a; f2.close(); return 0; }Ich bedanke mich schon einmal im voraus.

-
Dann nimm doch gerade nicht die eine Lesefunktion, die Zeilenumbrüche als etwas besonderes ansieht (getline). Wie wäre es mit folgendem?
std::ifstream file("file.txt"); std::string str((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
-
ok vielen Dank
Wie kann ich den Dateipfad durch eine Variable bestimmen ?
So geht es ja nicht :
#include <iostream> #include <fstream> #include <string> using namespace std; int main () { string a; cin >> a; ifstream f2(a); string stra((std::istreambuf_iterator<char>(f2)), std::istreambuf_iterator<char>()); if (f2.fail () ==true) { cout << "Datei ERROR"; } cout << stra; f2.close(); return 0; }
-
Entweder C++11 benutzen (da geht das) oder mit c_str().
Deine Zeilen 18-24 machen nicht viel Sinn. Natürlich ist der Stream fail, nachdem er komplett gelesen wurde. Zeilen 29 und 30 kannst du dir komplett sparen, die machen an der Stelle genau das gleiche, als wenn sie nicht da wären.
Außerdem musst du noch den Header
iteratoreinbinden für die streambuf-Iteratoren.