fstream << a(0) << ...<<a(n) vs fstream << a(0); ... fstream <<a(n);

fstream << a(0) << ...<<a(n) vs fstream << a(0); ... fstream <<a(n);

给定包含数据 a(1) - a(n) 的多个变量,使用 std::fstream 将此数据写入文件的最佳方法是什么?有什么区别?

如果我打开 std::fstream 文件,我会使用

std::fstream << a(0) <<"\t" <<
             << a(1) <<"\t" <<
             ...
             << a(n) <<"\n";

std::fstream << a(0);
std::fstream << "\t";
...
std::fstream << a(n);
std::fstream << "\n"; 

是否存在功能或性能差异?

std::fstream << a(0) <<"\t" <<
             << a(1) <<"\t" <<
             ...
             << a(n) <<"\n";

basic_ostream::operator<<的return值为basic_ostream &

以上可以改写为:

std::fstream.operator<<( a(0) ).operator<<( "\t" ).operator<<( a(1) )...

即一系列 std::ostream.operator<<() 调用。

std::fstream << a(0);
std::fstream << "\t";
...
std::fstream << a(n);
std::fstream << "\n"; 

这可以重写为:

std::fstream.operator<<( a(0) );
std::fstream.operator<<( "\t" );
...

即一系列 std::fstream.operator<<() 调用。

输出序列的两种写法在功能上是相同的。

前者打字更少,更容易阅读恕我直言。