2012-11-16 64 views
2

這只是一個快速問題。但我試圖輸出數據到一個文件,工作正常。 但是我也試圖在適當的位置實施一個新的行,以便在各行上打印數據。C++輸出到文本文件時出現新行字符

這是我的代碼目前的樣子:

的main.cpp

Writer w("Output.txt"); 
    w.writeString("The number of words in the script are: "); 
    w.writeInt(count); 
    w.writeEol(); 
    w.writeString("The number of Officers in the script are: "); 
    w.writeInt(ofCount); 
    w.writeEol(); 
    w.writeString("The number of Courtiers in the script are: "); 
    w.writeInt(cCount); 
     w.close(); 

Writer.cpp

void Writer::writeEol() 
{ 
    out << "\n" << endl; 
} 

我的代碼已經被實現這種方式爲我的整個系統建立像這樣。

所以我的問題是,我將如何調整我的Writer :: writeEol()來添加一個新行到我的輸出文件?

我的輸出文件目前出來是這樣的:

The number of words in the script are: 32339The number of Officers in the script are: 2The number of Courtiers in the script are: 9 

任何幫助是極大的讚賞。 :)

+5

毫無疑問。 – chris

+0

我看不到問題 –

+0

那麼,你有'writeEol'的代碼。什麼不起作用? – chris

回答

5

沒有適當的問題,我只能猜測你想學什麼,所以隨時與實際問題,更新您的「問題」:

你基本上寫兩個線闖入文件,取決於編碼(即Windows或Unix換行符),您將不會看到區別:

std::endl將自動包含正確的字符以創建換行符。沒有必要寫"\n"

你也不必通過std::endl流中,除非你真的想在某個位置的換行符:

std::cout << "The result is: "; 
std::cout << 50 << std::endl; 

請記住,這取決於你的編輯器,你可能不會看到所有換行符,例如Windows記事本不會顯示只有\n的換行符。它會變成一個看不見的角色。對於被接受的實際換行符,您需要輸入\r\n。相比之下,開源編輯器Notepad ++接受並顯示兩種換行符。

+0

我很困惑你的最後一句話。'std :: endl'和'\ n'之間的唯一區別是flush。 – chris

+0

謝謝,那是我的問題。 :) –

+0

@chris:根據上面'writeEol()'的代碼判斷,我認爲James認爲'std :: endl'會刷新或以某種方式結束cout行,因爲他會寫''n「'AND'std :: endl',如果你只想要一個換行符/ EOL,它對我沒有任何意義。 – Mario

0

在你的writeEol()方法中,你輸出一個換行符(\n),並且你寫出一個std::endl。這些都有寫出一個換行符的效果,這是你想要的。但是,std::endl也會刷新流,在某些情況下這是不需要的(如果在每行之後刷新流,可能會導致放緩)。

我認爲你的代碼會做你想做的事(儘管有兩條新行),但作爲shuttle87狀態,你只需要在每行末尾有一個\n即可達到所需的效果。