«Двоичный» режим, управляемый std::ios_base::binary
, предназначен только для отключения перевода новых строк между стандартным символом C ++ \n
и системной последовательностью новой строки, сохраняемой в файлах.
Это полностью не зависит от того, анализируете ли вы файл, который содержит значимые разделительные пробелы или какой-то совершенно другой формат байтов, поэтому нет никаких причин связывать две ортогональные части функциональности вместе.
(Стандарт C ++ мало говорит о том, что означает двоичный режим, в стандарте C более подробно говорится о потенциальных различиях между текстовыми потоками и двоичными потоками. Двоичные потоки должны считывать байты за байтом в том виде, в каком они были написано в любой заданной системе, тогда как текстовый поток должен делать это только с учетом ряда ограничений, сосредоточенных вокруг отсутствия лишних пробелов перед новой строкой и отсутствия каких-либо управляющих символов, кроме новых строк и вкладок. Система вообще не должна делать никаких различий между двоичными и текстовые потоки.)