2015-05-10 185 views
1

試圖讀取和寫入.txt文件中的數據。閱讀工作正常,但每次我嘗試寫入時,都會覆蓋之前寫入的內容。只有最後寫的東西仍然存在。在txt文件中寫入

void    trace(Board& tab) 
{ 
    ofstream  file("trace.txt", ios::in | ios::trunc); 
    Position  pos(0,0); 
    Position&  p = pos; 

    if(file) 
    { 
     for (int i = 0; i < tab.getNbline(); i++) 
     { 
      for(int j = 0; j < tab.getNbcolumn(); j++) 
      { 

       p.setposition(i,j); 

       if(i == tab.getEmptyline() && j == tab.getEmptycolumn()) 
       { 

        file << setw(tab.getNbcolumn()) << tab.getValue(p); 

        if (j == tab.getNbcolumn()-1) 
        { 
         file << endl; 
        } 
       } 
       else 
       { 

        file << setw(tab.getNbcolumn()) << tab.getValue(p); 
        if (j == tab.getNbcolumn()-1) 
        { 
         file << endl; 
        } 
       } 
      } 
     } 
     file.close(); 
    } 
    else cerr << "Cannot open file" << endl; 
} 

void trace_message(string str) 
{ 
    ofstream  file("trace.txt", ios::in | ios::trunc); 
    if(file) 
    { 
      file << str << endl; 
      file.close(); 
    } 
    else cerr << "Cannot open file" << endl; 

} 

任何想法?是否因爲「ios :: trunc」? (我不知道這是什麼意思)

+0

這裏回答。 http://www.cplusplus.com/doc/tutorial/files/ – 911

回答

3

Repalce的ios :: TRUNC內部監督辦公室::應用程序(附加在文件末尾)

+0

它的工作:3我有一個想法seek()和ios :: end,但你的解決方案工作得很好,謝謝:) – Csi

+0

我可以問這個話題的另一個問題?這是關於一個奇怪的東西寫在我的txt文件中,當我嘗試寫下這樣的東西:「str =」Nombre d'iterations「+ nbiter;」舉個例子。 – Csi

+0

@Csi你的意思是你的txt文件對你來說不可讀(不是UTF-8)? – Dien

1

如果你想在文件中,你應該使用ifstream的編寫。但是,由於您正在閱讀文件,如果您只使用fstream,它會更好。

http://www.cplusplus.com/reference/fstream/ofstream/ofstream/

在鏈接頁面,您可以閱讀有關TRUNC,你不明白。

對不起,如果我的英文不好。還在學習它。

+0

我認爲你的意思是「ofstream」,而不是「ifstream」。 – Beta

+0

據我所知,ifstream用於閱讀,ofstream用於寫作,fstream用於兩者。 – Csi