Почему Createfile () не имеет двоичного флага - PullRequest
6 голосов
/ 29 октября 2010

Одна из самых больших радостей программирования Windows - не забывать вставлять 'wb' или 'rb' или ios :: binary во все вызовы открытия файлов, чтобы Windows не весело конвертировала все ваши 0x13.

Мне просто пришлось преобразовать кучу красиво стандартного кода, чтобы использовать Createfile () для получения определенного флага - и мне пришло в голову, что нет способа указать двоичный файл.
Как это узнать? Я действительно не хочу, чтобы это меняло байты в моем потоке MP4, большое спасибо.

Ответы [ 3 ]

8 голосов
/ 29 октября 2010

Потому что CreateFile не выполняет преобразования "текстовый режим" / перевод строки. Они обрабатываются на более высоком уровне, либо в FILE для CRT, либо в iostreams для C ++.

6 голосов
/ 29 октября 2010

Все, что касается Windows API, является двоичным.Лично я предпочитаю это так.Я никогда не использую «текстовый режим» в стандартной библиотеке.

1 голос
/ 29 октября 2010

Нельзя указать двоичный или текстовый флаг, потому что для ОС Windows все файлы являются двоичными! Опции wb и rb введены в порядке, как часть функциональности потока C IO, и даже тогда только в DOS / Windows, чтобы помочь разработчику читать и писать текстовые файлы и выполнять преобразование CR / LF в LF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...