В чем разница между открытием файла с помощью ios :: binary или ios :: out или обоих? - PullRequest
18 голосов
/ 09 февраля 2010

Я пытаюсь выяснить разницу между открытием файла, например:

fstream *fileName*("FILE.dat",ios::binary);

или

fstream *fileName*("FILE.dat",ios::out);

или

fstream *fileName*("FILE.dat",ios::binary | ios::out);

Я обнаружил, чтовсе эти формы идентичны: во всех случаях один и тот же вывод файла создается с использованием либо *fileName*<<, либо *fileName*.write().

Ответы [ 2 ]

24 голосов
/ 09 февраля 2010

ios::out открывает файл для записи.

ios::binary обеспечивает чтение или запись данных без перевода символов новой строки в \r\n на лету.Другими словами, именно то, что вы даете потоку, является именно тем, что написано.

5 голосов
/ 09 февраля 2010

Открытие файла с помощью ios :: binary контролирует, как обрабатываются символы новой строки. В Windows они расширены до пар CRLF. Вот и все - это не влияет на работу таких вещей, как оператор <<. </p>

...