Funktion zum Einlesen einer Datei



  • Hallo zusammen,
    stehe noch ganz am Anfang und benötige Hilfe.
    Eine Funktion, die eine Datei einliest und als String zurückliefert.
    std::string status () {
    string line;
    string txt;
    ifstream myfile ("status.txt");
    if (myfile.is_open())
    {
    while (! myfile.eof() )
    {
    getline (myfile,line);
    txt << line;
    }
    myfile.close();
    }

    return txt;
    //return "Meldung1\nnächste Zeile\nund so weiter";
    }

    Fehler: no match für »operator>>« in »txt << line«



  • #include <sstream>
    
    std::string status () {
    string line;
    stringstream txt;
    ifstream myfile ("status.txt");
    if (myfile.is_open())
    {
    while (! myfile.eof() )
    {
    getline (myfile,line);
    txt << line;
    }
    myfile.close();
    }
    
    return txt.str();
    //return "Meldung1\nnächste Zeile\nund so weiter";
    }
    


  • Danke, das hat geklappt. Allerdings werden die Zeilenumbrüche ignoriert. Die Funktion soll den Dateiinhalt in einem TextView Widget anzeigen.



  • Hy

    getline() => holt immer genau eine Zeile aus der Textdatei.

    Also wenn du diese Zeile dann in eine Textbox schmeißt, dann hänge einfach wieder ein "endl" an und du hast was du möchtest.

    Würde natürlich auch gehen wenn du mit ".read()" die komplette Datei Ausliest aber so wie es gezeigt wurde ist es einfacher.

    Mfg marco



  • bernd_h_schulz schrieb:

    Eine Funktion, die eine Datei einliest und als String zurückliefert.

    .. ganz einfach so

    #include <fstream>
    #include <iostream>
    #include <sstream>
    #include <string>
    
    std::string status()
    {
        std::ostringstream txt;
        std::ifstream myfile("status.txt");
        txt << myfile.rdbuf();
        return txt.str();
    }
    


  • Werner_logoff schrieb:

    .. ganz einfach so

    #include <fstream>
    #include <iostream>
    #include <sstream>
    #include <string>
    
    std::string status()
    {
        std::ostringstream txt;
        std::ifstream myfile("status.txt");
        txt << myfile.rdbuf();
        return txt.str();
    }
    

    Danke Werner_logoff, einfacher gehtś nicht


Anmelden zum Antworten