In my experiments with the following code snippet, I did not find any particular difference whether i created the streams with/without the ios:binary mode:
i
When you want to write files in binary, with no modifications taking place to your data, specify the ios::binary
flag. When you want to write files in text mode, don't specify ios::binary
, and you may get things like line ending translation. If you're on a UNIX-like platform, binary and text formats are the same, so you won't see any difference.
The only difference between binary
and text
mode is how the '\n' character is treated.
In binary
mode there is no translation.
In text
mode \n
is translated on write into a the end of line sequence
.
In text
mode end of line sequence
is translated on read into \n
.
The end of line sequence
is platform dependant.
Examples:
LF ('\0x0A'): Multics, Mac OS X, BeOS, Amiga, RISC OS
CRLF ('\0x0D\0x0A'): Microsoft Windows, DEC TOPS-10, RT-11
CR: ('\0x0D'): TRS-80, Mac OS Pre X
RS: ('\0x1E'): QNX pre-POSIX implementation.