我以二进制模式打开了一个文件,喜欢写一个文件。
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”。 这是以二进制模式写入的最佳和最有效的方法。
答案 0 :(得分:10)
运营商LT;&LT;将您的数据格式化为文本。而write将以与ram中存储的格式相同的格式输出数据。因此,如果您正在编写二进制文件,则需要使用write。
但是,如果您要编写非pod类型,则需要小心。你不能只说:
write( &mystring, sizeof(std::string) );
您需要有一些方法来输出实际数据,这些数据不存储在类或结构本身中。
答案 1 :(得分:1)
AFAIK写入传递值'原样',其中作为运算符&lt;&lt;执行一些格式化。
有关详情,请参阅here,其中列出了一些功能。
如上所述,二进制数据通常比使用write更可取,因为它只是在没有任何格式的情况下输出数据(这对于二进制数据非常重要,因为额外的格式化可能会使格式无效)