Heisst also das wenn ich die Dateien im Binärformat öffne nicht auf den Datentyp (.exe .jpg .txt)achten muss?
Nicht vermischen: .exe ist eine Dateiendung. Du kannst auch "bild.jpg" in ein "bild.exe" umwandeln (Doppelklicken funktioniert nicht mehr, aber ein einfaches Rückbenennen ist möglich). Der Datentyp wird üblicherweise als MIME-Type angegeben, jpg ist z.B. "Image/JPEG".
Binäres Lesen ist aber immer gleich: Alle Dateien bestehen aus Bytes, die du lesen kannst.
diese "logisches Oder" Methode
Nein, logisches exklusives oder. Logisches oder ist: A oder B = A, B oder A und B.
Logisches exklusives Oder ist: A xor B = (A und nicht B) oder (B und nicht A).
In Logischer Schreibweise: A xor B = (A ∧ ¬B) ∨ (¬A ∧ B).
(∨ = OR, ∧ = AND, ¬ = NOT).
In C, bitwise operators:
Oder: |
Und: &
Not: ~
XOR: ^
logische Operatoren (für dich hier unnütz, aber zur Vollständigkeit):
Oder: ||
Und: &&
Not: !
XOR: != (Auf Bool-Ebene...)
Siehe dazu auch den Wikipediaartikel.
Hast du gerade den Befehl im Kopf mit dem ich die Datei im Binärformat öffne?
std::ifstream(file, std::ios::binary) schon vergessen?
wie ich die Datei im Binärformat öffne hast du ja bereits geschrieben und getline KÖNNTE ich ja auch weiterhin benutzen
Könntest du, solltest du nicht. Getline liest bis zum ersten \n. Das geht gut bei Text, da man annimmt, dass es nicht allzu lange Zeilen gibt. Bei gewissen Binärdateien kommt das aber nie vor => du liest eine ganze Datei auf einmal.
Kann ich denn auch weiterhin die ganzen Nullen und Einsen in einen String packen und danach einfach in die Datei reinpacken?
Achtung: Du liest nicht Bits, du liest Bytes. (Eine Textdatei binär gelesen liest sich fast so wie eine Textdatei im Textmodus - nur die Zeilenenden unterscheiden sich).
Wenn du Bytes liest, liest du schlicht eine Zahlenfolge von einzelnen Zahlen in 0..255. Die Interpretation davon ist für Verschlüsselungen egal.
Gruss
cwriter