c++ ofstream“〈〈”和Write有什么区别

kb5ga3dv  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(191)

我已经打开了一个二进制模式的文件,并喜欢写一个文件。

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

我想知道使用<<ofile.write有什么区别。
在二进制模式下,哪一种是最好和最有效的?

r9f1avp5

r9f1avp51#

AFAIK write传递值'as is',其中运算符〈〈执行一些格式化。
更多信息请看here,它有一些列有特性的要点。
如上所述,对于二进制数据,通常最好使用write,因为它只是输出数据而不进行任何格式化(这对于二进制数据非常重要,因为额外的格式化可能会使格式无效)

v6ylcynt

v6ylcynt2#

operator〈〈会将你的数据格式化为文本。而write会将数据以存储在ram中的相同格式输出。所以,如果你正在写二进制文件,你想使用write。
但是,如果你正在编写非pod类型,你需要小心。你不能只是说:

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

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

相关问题