2014-10-08 16 views
0

我有一個奇怪的問題正在進行。我有兩個函數,兩個函數都有一個引用通過引用。但是,當我調用第二個函數時,正在打印第一個函數的一部分。在另一個功能的流媒體打印

這是第一個功能:

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 ] 

我不希望在標籤和序列之間打印「隨機」字樣。

我該如何解決這個問題?

+0

這些函數是如何被調用的?來自不同的線程? – dlf 2014-10-08 22:55:56

+0

他們從一個主要班級被召喚。 'GamePlay遊戲; game.dealDominos(outStream,seed); game.findLongestSeq(outStream);' – 2014-10-08 22:56:52

+0

抱歉,不知道如何在評論中執行代碼語法。 – 2014-10-08 22:59:04

回答

1

它看起來像你有兩個單獨的ofstream對象引用相同的基礎文件,這是一個非常糟糕的主意,除非你要在每次寫入時進行大量的查找操作和刷新,以確保文件位置每次寫入都會更新。

+0

我只有一個對象,並通過引用傳遞它。 – 2014-10-08 23:09:33

+1

如果ofstream實際上是cout或cerr,並且您也使用其中之一,那麼它看起來就像這樣。所以檢查你是否使用cout或cerr。 – dom0 2014-10-08 23:09:52

+0

@ dom0,你能解釋一些嗎? – 2014-10-08 23:16:04