流打印在另一个功能中

ofStream printing in another function

本文关键字:功能 另一个 打印      更新时间:2023-10-16

我遇到了一个奇怪的问题。我有两个函数,它们都有一个通过引用传递的ofstream。然而,当我调用第二个函数时,第一个函数的一部分正在打印。

这是第一个功能:

void GamePlay::dealDominos(ofstream& outStream, int seed){
    for(int i = 0; i < 10; ++i) 
    {
       outStream << "random " << rand() << endl; 
    }
}

我的第二个功能是:

void GamePlay::findLongestSeq(ofstream& outStream)
{
    outStream << toStringSeq(label, maxSeq) << endl;
}

然而,我的输出看起来是这样的:

NEW MAX [  T   0  8 ]
NEW MAX random [  T   0  8 ][  T   8  1 ]
NEW MAX ndom [  T   0  8 ][  T   8  1 ][  T   1  1 ][  T   1  2 ]
NEW MAX dom [  T   0  8 ][  T   8  1 ][  T   1  1 ][  T   1  2 ][  T   2 11 ]
MAX SEQ FOR:    dom [  T   0  8 ][  T   8  1 ][  T   1  1 ][  T   1  2 ][  T   2 11 ]

我不想在标签和序列之间印上"随机"这个词。。

我该如何解决这个问题?

看起来有两个独立的ofstream对象引用同一个底层文件,这是一个非常糟糕的主意,除非你要在每次写入时执行大量的查找操作和刷新,以确保每次写入都更新文件位置。