ios::binary... Wieso?
-
Hi Leute,
ich stelle mir schon seit langem die Frage, wieso es Sinn macht ios::binary bei, in diesem Beispiel bei, ofstream beim Laden hinzuschreiben.
Möchte man z.B. eine zahl binär speichern, macht man das so:#include <fstream> #include <iostream> int main() { std::ofstream ofs; ofs.open("D:/datei.txt", std::ios::out ); int a = 32767; ofs << (char*)&a; ofs.close(); return 0; }
Funktioniert, ob mit oder ohne std::ios::binary.
Wenn ich ios::binary angebe und es dann ganz ohne cast speichere, ändert das überhaupt nichts.
Wieso muss das also da stehen?MfG MAV
[ Dieser Beitrag wurde am 01.06.2003 um 11:57 Uhr von Mis2com editiert. ]
-
weil freakiger aussieht
nein im ernst das spielt dann eine rolle wenn aus irgendwelchen gründen eine unterscheidung zwischen text und binary files gemacht wird... so z.b. unter windows... offne mal eine datei im textmodus und schreib ein einzelnes '\n' rein... die datei hat dann (seltsamerweise) die grösse 2 bytes und es steht effektiv "\r\n" drinn
wenn du das mit binary machst steht wirklich nur das '\n' drinn...
-
OK, davon habe ich auch schon gehört, aber gibt es sonst keine Unterschiede?
\n oder \r\n ist ja kein groooßer Unterschied.MfG MAV
-
schreib mal ne textdatei mit ios::binary und ein par newlines und schau sie dir dann in nem editor unter windows an...
-
OK, WIndows erkennt nur \r\n als wirklichen Zeilenumbruch aber ohne ios::binary macht der \n automatisch dazu, ios::binary sorgt dafür, dass man wiorklich jedes zeichen kontrollieren kann.
OK, verstanden
Danke1
MfG MAV