Gesamten Datei-Inhalt in String?



  • pixelflat schrieb:

    Ah - verstanden! Schön erklärt...

    @...
    Ist bei getline der 3. Paramter nicht das Zeichen, bis zu dem eingelesen wird?

    exakt! und das soll genau das Dateiende-Zeichen sein. aber wie gesagt da gabs im C forum nen thread "Datei operationen" hiess der glaube ich. da gings 5 seiten nur um das EOF gequatsche und anscheinend is der cast, also der dritte Parameter, in der Form nich so das wahre.



  • Hallo,
    ich hab hier noch ein Problem.

    Wie kann ich anstatt des Dateinamens, einen String verwenden?

    string pfad;
    getline(cin, pfad);
    ifstream file(pfad);
    string fileText((istreambuf_iterator<char>(file)),istreambuf_iterator<char>());
    

    So funktionierts anscheinend nicht. -.-

    //Edit
    Wenn ich aus dem String "pfad" ein Char-Array mache, funktionierts zwar, aber das Programm bricht dann später einfach ab...

    //Edit
    Ok, das mit dem Abbrechen lag an einer falschen Deklaration des Char-Arrays.
    Kann ich in ein Char-Array auch eine Zeile (also incl. Leerzeichen) einlesen, wie bei getline?
    Bei cin >> pfad; wird ja nur ein Wort (bis zum LZ) eingelesen.





  • std::string file_path;
    std::getline(std::cin, file_path);
    std::ifstream file_stream(file_path.c_str(), std::ios::in);
    
    if (!file_stream)
        return false;
    
    std::string file_content((std::istreambuf_iterator<char>(file_stream)), std::istreambuf_iterator<char>());
    file_stream.close();
    


  • ifstream file(pfad.c_str());
    


  • @KasF:
    Einfach perfekt! 😉



  • Nochmal zur eigentlichen Frage. Um eine Datei einzulesen kann man den relativ unbekannten operator<< (std::ostream&, std::streabuf*) verwenden:

    std::ifstream datei(datename);
    std::ostringstream s;
    s << datei.rdbuf();
    std::string meinDateiinhalt = s.str();
    


  • tntnet schrieb:

    Nochmal zur eigentlichen Frage. Um eine Datei einzulesen kann man den relativ unbekannten operator<< (std::ostream&, std::streabuf*) verwenden:

    std::ifstream datei(datename);
    std::ostringstream s;
    s << datei.rdbuf();
    std::string meinDateiinhalt = s.str();
    

    War bis dato auch mein bevorzugte Variante für sowas. Aber anders habe ich einen stringstream gespart 🙂



  • Also, da ich jetzt mit deiner Methode (KasF) die Datei auslese...

    Kann ich so auch in die Datei schreiben?



  • pixelflat schrieb:

    Also, da ich jetzt mit deiner Methode (KasF) die Datei auslese...

    Kann ich so auch in die Datei schreiben?

    ofstream outfile("...txt");
      copy(mystring.begin(),mystring.end(),ostream_iterator<char>(outfile));
    

Anmelden zum Antworten