Ganze Datei in einer String



  • Hi,

    ich müsste eine Datei (ASCII) einlesen und komplett in einem String speichern. Meine bisherige Vorgehensweise:
    Zeilenweise auslesen und anhängen:

    std::string ganzerString;
    std::ifstream file(filename.c_str());
    if (file)
    {
    while (!file.eof())
    {
    std::getline(file, dummy);
    ganzerString=ganzerString+dummy;
    }
    }

    Macht man das so? Gibts da keine andere Vorgehensweise?
    Karl



  • In C/C++ gibt es meines Wissens nach nur die Möglichkeit. In Qt zb. gäbe es da readAll();





  • Karl Blau schrieb:

    ich müsste eine Datei (ASCII) einlesen und komplett in einem String speichern.
    ...
    Gibts da keine andere Vorgehensweise?

    Hallo Karl,
    doch gibt es. Z.B.:

    #include <iostream>
    #include <fstream>
    #include <sstream>
    
    int main()
    {
        std::stringstream buf;
        buf << std::ifstream( "input.txt" ).rdbuf();
        // Der Inhalt der Datei ist in buf.str()
        return 0;
    }
    

    oder

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <iterator>
    
    int main()
    {
        std::string str;
        std::copy( std::istreambuf_iterator< char >( std::ifstream( "input.txt" ) ), 
            std::istreambuf_iterator< char >(), 
            std::back_inserter( str ) );
        return 0;
    }
    

    Gruß
    Werner


Anmelden zum Antworten