fstream und vector



  • hi,

    ich möchte eine datei einlesen und den binären inhalt in einen vector ablegen und anschliessend die daten ausgeben .. bekomme es nur leider nicht hin 😢

    // datei einlesen
    ifstream outfile(filename, ios::binary);
    // vector mit daten aus datei füllen
    vector<char> fvec(istreambuf_iterator<char>(outfile)); // ERROR
    // datei wieder schliessen
    outfile.close();
    // ausgabe von byte 3 bis 10 = 7
    string text(fvec[3],fvec[10]);
    cout << text<< endl;
    

    kann mir bitte wer helfen?



  • vector<char> fvec(istreambuf_iterator<char>(outfile)); // ERROR
    klar, da fehlt das Ende!
    vector<char> fvec(istream_iterator<char>(outfile), istream_iterator<char>());



  • so hatte ich das auch und gab bei mir fehler (vc6 servicepack5)

    ifstream outfile(filename);
    vector<char> fvec(istream_iterator<char>(outfile), istream_iterator<char>());
    

    error C2664: '__thiscall std::vector<char,class std::allocator<char> >::std::vector<char,class std::allocator<char> >(unsigned int,const char &,const class std::allocator<char> &)' : Konvertierung des Parameters 1 von 'class std::istream_iterator<char,char,struct std::char_traits<char> >' in 'unsigned int' nicht moeglich

    😞



  • ich nutze "stlport" .. hat das damit was zu tun?



  • der_held schrieb:

    vector<char> fvec(istreambuf_iterator<char>(outfile)); // ERROR
    klar, da fehlt das Ende!
    vector<char> fvec(istream_iterator<char>(outfile), istream_iterator<char>());

    Du weiß aber, dass du damit eine Funktion deklarierst, die einen vector<char> liefert und einen istream_iterator<char> sowie eine Funktion die einen istream_iterator<char> liefert und nichts erwartet, erwartet, oder?

    Was du wohl eher willst ist ein Objekt fvec vom Typ vector<char>, dass mit der Sequenz die durch die beiden istream_iteratoren gegeben ist, initialisiert wird.
    Das geht so:

    istream_iterator<char> begFile(outfile);
    istream_iterator<char> endFile;
    vector<char> fvec(begFile, endFile);
    

    oder für Leute, die auf nicht zu lesende Einzeiler stehen:

    vector<char> fvec((istream_iterator<char>(outfile)), istream_iterator<char>());
    

    Man beachte die extra Klammern!


Anmelden zum Antworten