我已经打开了一个二进制模式的文件,并喜欢写一个文件。
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有什么区别。在二进制模式下,哪一种是最好和最有效的?
<<
ofile.write
r9f1avp51#
AFAIK write传递值'as is',其中运算符〈〈执行一些格式化。更多信息请看here,它有一些列有特性的要点。如上所述,对于二进制数据,通常最好使用write,因为它只是输出数据而不进行任何格式化(这对于二进制数据非常重要,因为额外的格式化可能会使格式无效)
v6ylcynt2#
operator〈〈会将你的数据格式化为文本。而write会将数据以存储在ram中的相同格式输出。所以,如果你正在写二进制文件,你想使用write。但是,如果你正在编写非pod类型,你需要小心。你不能只是说:
write( &mystring, sizeof(std::string) );
你需要有一些方法来输出实际的数据,这些数据不存储在类或结构本身中。
2条答案
按热度按时间r9f1avp51#
AFAIK write传递值'as is',其中运算符〈〈执行一些格式化。
更多信息请看here,它有一些列有特性的要点。
如上所述,对于二进制数据,通常最好使用write,因为它只是输出数据而不进行任何格式化(这对于二进制数据非常重要,因为额外的格式化可能会使格式无效)
v6ylcynt2#
operator〈〈会将你的数据格式化为文本。而write会将数据以存储在ram中的相同格式输出。所以,如果你正在写二进制文件,你想使用write。
但是,如果你正在编写非pod类型,你需要小心。你不能只是说:
你需要有一些方法来输出实际的数据,这些数据不存储在类或结构本身中。