В чем разница между ofstream "<<" и Write - PullRequest
8 голосов
/ 02 декабря 2010

Я открыл файл в двоичном режиме и хотел записать в файл.

   ofstream ofile("file.txt",ios_base::binary)
    int a = 1;
    float f = 0.1;
    string str = 10;
    ofile<<a<<f<<str;

Хотелось бы узнать, в чем разница между записью с использованием «<<» и использованием «ofile.write».который является лучшим и эффективным для записи в двоичном режиме. </p>

Ответы [ 2 ]

10 голосов
/ 02 декабря 2010

operator << отформатирует ваши данные как текст. В то время как write будет выводить данные в том же формате, в котором они хранятся в оперативной памяти. Итак, если вы пишете двоичные файлы, вы хотите использовать write. </p>

Однако, если вы пишете не для стручков, вам следует быть осторожным. Вы не можете просто сказать:

write( &mystring, sizeof(std::string) );

У вас должен быть какой-то способ вывода фактических данных, которые не хранятся в классе или самой структуре.

1 голос
/ 02 декабря 2010

AFAIK write передает значение «как есть», где оператор << выполняет некоторое форматирование. </p>

Для получения дополнительной информации см. здесь , в нем есть пункты с перечнем некоторых функций.

Как уже упоминалось, для двоичных данных обычно предпочтительнее использовать запись, поскольку она просто выводит данные без любого форматирования (что очень важно для двоичных данных, поскольку дополнительное форматирование может сделать формат недействительным)

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