В моих экспериментах со следующим фрагментом кода я не нашел особой разницы, создавал ли я потоки с/без бинарного режима ios:
int main()
{
ifstream ostr("Main.cpp", ios::in | ios::binary | ios::ate);
if (ostr.is_open())
{
int size = ostr.tellg();
char * memBlock = new char[size + 1];
ostr.seekg(0, ios::beg);
ostr.read(memBlock, size);
memBlock[size] = '\0';
ofstream file("trip.cpp", ios::out | ios::binary);
file.write(memBlock, size);
ostr.close();
}
}
Здесь я пытаюсь скопировать исходный исходный файл в другой файл с другим именем.
Мой вопрос в том, в чем разница между вызовами чтения/записи (которые связаны с двоичным файлом IO) при открытии объекта fstream с/без ios:: двоичного режима? Есть ли преимущество использования двоичного режима? когда и когда не использовать его при выполнении файла IO?