2012-11-01 150 views
3

我們可以在使用輸入文件的元素的同時在函數中同時執行這兩個操作嗎?我們可以在輸出文件中同時寫入結果嗎?從另一個文件讀取時寫入文件

裏面的聲明是真的嗎?

void solve(string inputFileName, string outputFileName) 
{ 
//declaring variables 
string filename = inputFileName; 

//Open a stream for the input file 
ifstream inputFile; 
inputFile.open(filename.c_str(), ios_base::in); 

//open a stream for output file 
outputfile = outputFileName; 
ofstream outputFile; 
outputFile.open(outputfile.c_str(), ios_base::out); 

while(!inputFile.eof()) 
{ 
    inputFile >> number; //Read an integer from the file stream 
    outputFile << number*100 << "\n" 
    // do something 

} 

//close the input file stream 
inputFile.close(); 

//close output file stream 
outputFile.close(); 
} 
+1

你有試過嗎?我認爲它應該工作。 – Xymostech

+0

您可能想閱讀關於RAII(資源獲取是初始化)。你的close語句或者是多餘的(如果文件關閉了)或者不是異常安全的(如果文件沒有關閉,那麼close語句在異常情況下不會被執行,這可能會導致問題)。我猜你的代碼可以通過銷燬流對象來關閉文件,但是你應該明白爲什麼close語句可以被刪除。 – JohnB

+2

請勿使用'eof()'。這從來都不正確。每天大約有200人在StackOverflow上得到這個錯誤... –

回答

1

可以,輸入和輸出流是相互獨立的,所以它們混合在一起在語句中不具有組合效果。

2
while(!inputFile.eof()) 

不能很好地工作,因爲它測試,如果以前操作失敗,如果沒有下一個會是成功的。

而是嘗試

while(inputFile >> number) 
{ 
    outputFile << number*100 << "\n" 
    // do something 

} 

,你測試成功,每個輸入操作,當讀取失敗終止循環。

相關問題