[C++] Vector<char> nach char?

Hallo!
Ich hab da mal ne Frage zum Thema typecasting:
Ich habe eine Datei in einen Vector eingelesen - so weit so gut. Das soll dazu dienen, dass ich von der Datei die MD5 Hash erstellen kann. Aber um den ganzen inhalt mit einem MD5 check zu bearbeiten muss ich ihn als char übergeben. Jetzt hab ich das im Moment so gelöst: (codeschnipsel)
Code:
char test1[5000];
for (j=0;j<file.size();j++) 
{ test1[j]=file[j];}
Im Grunde genommen funktioniert das: Nur wenn ich eine Datei länger als 5000 Zeichen hab, wir das Programm wahrscheinlich abstürzen (weil über den Speicher des char test1 hinaus geschrieben wird)
Leider geht char test1[file.size()] nicht, weil char eine konstante Größe erwartet.
Wie kann ich das nun typecasten, oder sollte ich es anders machen?
Danke im Vorraus =)
 
Wenn ich nicht komplett verJAVT worden bin, sollte es in etwa so gehen:
Code:
vector <char> testvec;
    testvec.push_back('a');
    testvec.push_back('b');    
    testvec.push_back('a');
    testvec.push_back('b');    
    testvec.push_back('a');
    testvec.push_back(0);
    char* mychararray;
    mychararray=new char[testvec.size()];
    for (int j=0;j<testvec.size();j++) 
      { mychararray[j]=testvec[j];}
    testvec.~vector();  
    cout<< mychararray;
    delete[] mychararray;
Also dynamisch reservieren und nachher natürlich wieder freigeben.
 
ah, ja. Danke, hab's hinbekommen. :)
Mit mychararray=new char[testvec.size()]; erstelle ich den char array auf dem heap, oder? Wusste nicht, dass es dort möglich ist, chararrays mit dynamischer Größe zu erstellen.

~Topic Solved~
 
mit NEW reservierst Du im Prinzip immer einen Speicherblock von einer gewissen Größe. Wie dieser Block im Programm intern behandelt wird (ob das ein Chararray oder irgendein tolles Object ist), interessiert eigentlich nur den Compiler zur Kompilierungszeit ;).

Ob das wirklich immer im Heap reserviert wird - k.A (man müsste dazu das Manual lesen ;) ). Bei mir wird das jedenfalls (mit Mingw/GCC 3.4.2) so umgesetzt, dass letzendlich ein MALLOC aufgerufen wird für das NEW. Beim Vector ist es übrigens nicht anders - wenn man immer mehr Elemente addiert, sieht man schön, wie MALLOC immer mit zweier Potenzen aufgerufen wird.
 
Zurück
Oben