Probleme mit fstream.get()



  • Hi Forum,
    ich hab folgendes Problem:
    wenn ich versuch über die get methode von fstream eine datei ein zu lesen, liest das programm an bestimten stellen dez 0 in den string und gibt mir mit .gcount() auch nur die anzahl chars bis zu dieser stelle an.
    auserdem wird diese stellen dann auch als eof betrachtet.
    wenn ich mit dem hexeditor an diese stellen guck steht dort immer der hex wert 0A (0x0A).

    fstream fEinlesen;
    char cstring[1024];
    fEinlesen.open("C:\\Users\\username\\Desktop\\Desktop.bmp", ios::in);
    while (!fEinlesen.eof())
    {
       fEinlesen.get (cstring, sizeof(cstring));
       int zs=fEinlesen.gcount();
       //folgend noch anderer code.
    }
    

    hab ich irgend wo ein fehler drin?
    wär froh wenn ihr mir weiter helfen könntet.
    vielen dank im vorraus.
    MFG
    jojox



  • Lies doch mal die Spezifikation von fstream::get nach:
    http://cplusplus.com/reference/iostream/istream/get/

    Du willst offensichtlich eine Binärdatei lesen, da solltest Du den Stream auch mit ios::binary öffnen und zum lesen zB fstream::read benutzen.



  • Warum verwendest du nicht std::string?

    std::string ReadFile(std::string name)
    {
        std::ifstream istr(name.c_str(), ios::in | ios::binary);
        if(!istr.is_open()) throw std::runtime_error("File \"" + name + "\" could not be opened");
        std::ostringstream file_content_stream;
        file_content_stream << in.rdbuf();
        return file_content_stream.str();
    }
    

Anmelden zum Antworten