2011-12-26 47 views
0

我已經完成了這之前,但無法找到示例代碼...仍然是新的C++。輸出多行到一個文本文件

我需要輸出多行到一個文本文件。現在它只輸出最後一行,所以我假設每次循環運行時都覆蓋前一行。我怎樣才能得到它輸出一行,然後輸出到下一行等,而不寫在前面的行?

這裏有一個片段:

int main() 
{ 
    int n = 1; 

    while (n <= 100) 
    { 
     int argument = 0 + n; 

     ofstream textfile; 
     textfile.open ("textfile.txt"); 
     textfile << argument << endl; 
     textfile.close(); 

     ++n; 
    } 

    return 0; 
} 

回答

3

打開該文件,你進入循環之前,你退出循環後,關閉它。

+0

謝謝,工作完美!我覺得這很簡單......大腦只是不想工作。 – 2011-12-27 00:19:53

0

您應該打開和關閉循環外部的文件。當文件被打開時,它默認爲覆蓋。你可以指定一個追加模式,但是由於打開一個文件是一個有點冗長的操作,在這種情況下,你並不想這麼做。

-1

使用這個代替:

int main() 
{ 
    int n = 1; 

    while (n <= 100) 
    { 
     int argument = 0 + n; 

     ofstream textfile; 
     textfile.open ("textfile.txt", ofstream::out | ofstream::app); 
     textfile << argument << endl; 
     textfile.close(); 

     ++n; 
    } 

    return 0; 
} 
1

它看起來像默認打開方式是重寫,所以它一定會寫在文件中的任何事情之前什麼當前正在寫入文件。

下面是保持文件句柄打開而不是重新打開很多次。如果你想追加,你應該使用這個:

textfile.open ("textfile.txt", ios::out | ios::app); 

這將打開文件的輸出和附加在文件的末尾。

int main() 
{ 
int n = 1; 

ofstream textfile; 
textfile.open ("textfile.txt"); 

while (n <= 100) 
    { 
    int argument = 0 + n; 

    textfile << argument << endl; 

    ++n; 
    } 
textfile.close(); 

return 0; 
} 
相關問題