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. 🙂


  • Mod

    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;
    }
    

  • Mod

    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 iterator einbinden für die streambuf-Iteratoren.


Anmelden zum Antworten