什么是“<<”之间的区别和写

时间:2010-12-01 22:32:36

标签: c++ visual-c++ file

我以二进制模式打开了一个文件,喜欢写一个文件。

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

想知道使用“&lt;&lt;”写作之间的区别并使用“ofile.write”。 这是以二进制模式写入的最佳和最有效的方法。

2 个答案:

答案 0 :(得分:10)

运营商LT;&LT;将您的数据格式化为文本。而write将以与ram中存储的格式相同的格式输出数据。因此,如果您正在编写二进制文件,则需要使用write。

但是,如果您要编写非pod类型,则需要小心。你不能只说:

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

您需要有一些方法来输出实际数据,这些数据不存储在类或结构本身中。

答案 1 :(得分:1)

AFAIK写入传递值'原样',其中作为运算符&lt;&lt;执行一些格式化。

有关详情,请参阅here,其中列出了一些功能。

如上所述,二进制数据通常比使用write更可取,因为它只是在没有任何格式的情况下输出数据(这对于二进制数据非常重要,因为额外的格式化可能会使格式无效)