Inhalt einer Datei -> String



  • Hallo,

    kann mir jemand sagen, welches der einfachste Weg ist, den Inhalt einer Datei in Gänze in einen String zu bekommen?



  • Mit std::ifstream einlesen und vorneweg an den String anhängen.

    std::ifstream FileStream("file.txt");
    
    std::string Line;
    std::string Everything;
    
    while (std::getline(FileStream, Line))
    {
        Everything += Line;
    }
    

    Mit std::string::reserve() kann man noch einige Allokationen vermeiden.

    P.S. Wenn du die Zeilenumbrüche auch speichern willst, musst du das manuell tun, denn von std::getline() werden sie nicht aufgenommen.



  • ingobulla schrieb:

    Hallo,

    kann mir jemand sagen, welches der einfachste Weg ist, den Inhalt einer Datei in Gänze in einen String zu bekommen?

    ?In Gänsen? du meinst wie du eine datei komplett in einen String packen kannst?
    Naja du kannst es Zeilenweise Einlesen und dann in einen std::vector<std::string> packen

    Edit: grml Nexus war mal wieder schneller, wie ein Tier ist er da :p
    Edit: ok ich geb mich geschlagen, meine rechtschreibung ist der Renner 😃



  • Firefighter schrieb:

    ingobulla schrieb:

    Hallo,

    kann mir jemand sagen, welches der einfachste Weg ist, den Inhalt einer Datei in Gänze in einen String zu bekommen?

    ?In Gänsen?

    http://de.wikipedia.org/wiki/Ganzheit



  • Ok -.- Hab das verdammte Wort falsch betont, jetzt weiß ich acuh was er damit meint...



  • Firefighter schrieb:

    Naja du kannst es Zeilenweiße Einlesen und dann in einen std::vectorstd::string packen

    Geht das auch mit grünen Zeilen?



  • Firefighter schrieb:

    Ok -.- Hab das verdammte Wort falsch betont, jetzt weiß ich acuh was er damit meint...

    heute nich dein Tag 😉



  • Ne :p nicht so wirklich,ne scheiß Nacht gehabt.Morgen wirds besser 🤡



  • Nexus schrieb:

    [cpp]// ..
    while (std::getline(FileStream, Line))
    {[/cpp]

    Firefighter schrieb:

    Naja du kannst es Zeilenweise Einlesen und dann in einen std::vector<std::string> packen

    Mal 'ne Frage:
    gibt es irgendwo eine Lehranstalt, die es unter Androhung der Todesstrafe zur Pflicht macht, auf jede Frage nach dem Einlesen von irgendwas mit 'getline' zu antworten.

    getline ist ein Funktionalität, die nur in Ausnahmefällen wirklich benötigt wird. Im Grunde ist getline unnötig, man braucht es nur, wenn man auf ein Format trifft, welches das Zeilenende als (semantisch) formatierendes Element einsetzt - das wäre zwar ein schlecht gemachtes Format, aber es kommt manchmal vor.

    ingobulla fragte nach Einlesen in einen String, der besteht aus Zeichen, warum sollte man dann keine Zeichen lesen?

    std::ifstream FileStream("file.txt");
        std::string ergebnis( (std::istream_iterator< char >( FileStream >> std::noskipws )), std::istream_iterator< char >() );
    

    .. geht natürlich auch als Schleife, wem das lieber ist.

    erfordert:

    #include <fstream>
    #include <string>
    #include <iterator> // istream_iterator
    

    Gruß
    Werner


Anmelden zum Antworten