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!