我拼命试图通过使用fstream:列来产生格式化的输出。

有两个函数(无论哪个函数Func1,Func2)都会产生输出(写到同一文件“example.dat”):

#include <fstream>

int main()
{
    std::ofstream fout;
    fout.open("example.dat");

    for (int i=0; i<10; i++)
    {
        fout << Func1(i) << std::endl;
    };

    // Func2 depends on Func1, thus them **cannot** be written at the same time:
    // fout << Func1() << " " << Func2() << std::endl;

    for (int i=0; i<10; i++)
    {
        fout << Func2(i) << std::endl;
    };

    return 0;
}

输出将类似于:

函数1(0)

函数1(1)






函数1(9)

函数2(0)

函数2(1)







函数2(9)

我的问题是:如何将输出生成为两列:

函数1(0)函数2(0)

Func1(1)Func2(1)







虽然它们不是同时写的。

我怀疑我需要使用seekp(),tellp(),但不幸的是,我并不是一个高手。

请帮忙!

先感谢您。

最佳答案

vector<ostringstream> streams(10);

for (int i=0; i < 10; ++i)
{
    streams[i] << Func1(i);
}

for (int i=0; i < 10; ++i)
{
    streams[i] << " " << Func2(i);
}

ofstream fout("example.dat");

for (int i=0; i < 10; ++i)
{
    fout << streams[i].str() << endl;
}

10-08 01:36