von char[512] nach ::std::vector<char> kopieren



  • also grundsätzlich wäre sowas gut:

    for( int j= 0 ; j < filesize ; j+=RECORDSIZE )
               	{
       	        	i.read(buffer, RECORDSIZE);
       	        	::std::copy( &buffer[0], &buffer[RECORDSIZE], content[j] );
       	        }
    

    nur sind zeiger ja keine iteratoren...

    und @finix:
    das sieht ganz toll aus, aber dann brauche ich ja schon einen std::vector um eine kopie zu machen. ich hab aber nen c-string. *heul*

    @xyz:
    wäre auch nicht schlecht. aber leider gibts da '\0', das in binären dateien vorkommen kann. und das macht sich ganz schlecht in strings... 😮


  • Mod

    betrug schrieb:

    nur sind zeiger ja keine iteratoren...

    nein? 😕



  • dumm nur,dass zeiger häufig als iteratoren benutzt werden 😉



  • camper schrieb:

    betrug schrieb:

    nur sind zeiger ja keine iteratoren...

    nein? 😕

    nicht dass ich wüsste 😕



  • Ein Iterator ist ja nur ein Konzept und Zeiger erfüllen dies ziemlich gut 🙂

    In Struppis Worten:

    Bjarne Stroustrup schrieb:

    ein Iterator ist eine Abstraktion...alles was sich wie ein Iterator verhält ist ein Iterator

    Die C++-Programmiersprache | ISBN: 382731660X



  • kleiner tipp: insert bei vector/string benutzen.



  • betrug schrieb:

    @xyz:
    wäre auch nicht schlecht. aber leider gibts da '\0', das in binären dateien vorkommen kann. und das macht sich ganz schlecht in strings... 😮

    doch, geht!

    Die std::string-Klasse verarbeitet ja keine C-Strings, sondern ganz allgemein Zeichenketten, da duerfen auch Null-Bytes rein! 🙂

    Natuerlich kommt dann bei str.c_str() ein Pointer auf den String-Puffer zurueck, der auch die Null-Bytes mit einschliesst. Wenn man's aber weiss, dass welche drin sind, kein Problem! 😉



  • ja, ok, zeiger sind eine untermenge von iteratoren. aber es funktioniert trotzdem nicht 😞 .

    @insert:

    void insert(iterator pos, InputIterator f, InputIterator l)
    

    wenn das geht, dann würde auch das mit copy gehen.

    na egal, ich kopier jetzt zeichenweise. so. hah. 😡 ( 😃 )

    (kriegt der chef hier eigentlich geld, wenn ich das buch über amazon kaufe??? 😉 )



  • Brauchst du überhaupt C(-Strings)?
    Ansonsten könntest du evtl. direkt mit istream_iterator & back_insert_iterator was basteln...


  • Mod

    warum liest du nicht einfach direkt in einen vector<char> ?

    std::vector< char > content( filesize );
        i.read( &content[0], filesize );
    

    und gut



  • camper schrieb:

    warum liest du nicht einfach direkt in einen vector<char> ?

    weil ich die daten (später) gepackt vorliegen hab, und die mit zlib entpacken will. und die zuständige funktion gibt nen char-array zurück.

    vielleicht wär's sogar besser, die daten in einem array zu lassen. aber dann kommt das ganze rumgefuchtel mit new[] und delete[]...



  • camper schrieb:

    warum liest du nicht einfach direkt in einen vector<char> ?

    std::vector< char > content( filesize );
        i.read( &content[0], filesize );
    

    und gut

    aber das ist gut. 👍


Anmelden zum Antworten