C++ Datei Byteweise einlesen: Klasse gesucht!
Ich bin zzt. dabei, in C++ ein simples Programm zu schreiben, das Dateien mittels Passwort ver- und entschlüsseln kann.
Nun suche ich eine Möglichkeit, eine Datei einzulesen. Ich muss auch angeben können, in welchem Bereich die Datei eingelesen wird. (z.B. Byte 0-255, 256-511, etc.)
Weiterhin muss ich die Bytes in z.B. ein Char-Array schreiben können. Soweit ich weiß, gibt es dafür Funktionen in den jeweiligen Klassen.
Gleichzeitig muss das alles auch in die andere Richtung fuktionieren: Vom Char-Array zum Datei-Objekt zur Datei
Ich habe bereits intensiv gegoogle'd, konnte aber nichts finden, was mit explizit weiterhilft.
Ich weiß, dass ich eine Klasse wie z.B. fstream oder FILE benutzen kann.
Ich würde mich freuen, wenn mir jemand anhand einer geeigneten Klasse mithilfe von Beispielen die Syntax der von mir benötigten Funktionen erklärt.
Vielen Dank schonmal im Vorraus!
AW: C++ Datei Byteweise einlesen: Klasse gesucht!
Bau dir doch selbst eine Klasse.
Als Member-Variable gibst du ganz klassisch ein z.B. FILE *stream an.
Zum öffnen bauste die Funktion, kannst die auch als Constructor nehmen:
Code:
bool OpenFile(const char *fileName)
{
if ((stream=fopen(fileName, "rt")) == 0)
return false;
}
Zum lesen deiner beliebigen Bytes:
Code:
bool WriteFromTo(const long offset, const long count, char *array)
{
if (fseek(stream, offset, 0)==-1)
return false;
array=new char[count];
char c;
for(long i=0; i<count; i++)
if ((c=fgetc(stream))!=EOF)
array[i]=c;
else
return true;
}
Das ließt dir jetzt in dein Array count Bytes ein. Dabei ist hier vorausgesetzt, dass du das Array vorher zwar angelegt hast, aber ohne ihm Speicher zuzuweisen!
Der Weg in die andere Richtung funktioniert ähnlich mit fputc. Kannst du dir ja mal selbst überlegen. Zur Erklärung der Funktionen gibt es bei Google sicher die ein oder andere Dokumentation.
Du darfst auch nicht vergessen die Datei irgendwann mit fclose zu schließen.
Der Code kann übrigens Fehler enthalten, habe schon bald ein Jahr lang kein C mehr geschrieben.
Übrigens ein wenig aufpassen mit diesem Klassenzeug. Es wird zwar als toll gepriesen, führt aber einiges an zusätzlichem Speicheraufwand mit sich herum und verlangsamt daher (natürlich nur bei großen Programmen spürbar).