我正在做一個銀行業務程序和我的存款功能我有下面的代碼,它從文本文件中讀取並將數量存儲到famount中。 唯一的問題是,當我運行該程序並輸出了命令時,先前的行與上面的行具有完全相同的數據。C++如何阻止我的循環吐出最後一次輸入兩次
這是一段代碼。
file>>firstname>>lastname;
cout<<endl<<firstname<<" "<<lastname<<endl;
string line;
while (getline(file, line))
{
//stringstream the getline for line string in file
istringstream iss(line);
file>>date>>amount;
iss >> date >> amount;
cout<<date<<"\t\t"<<amount<<endl;
famount+=amount;
// I tried to use this to stop reading after
// to the file ends but it still reads the last
// data on the file twice.
if(file.eof()){
break;
}
}
cout<<famount;
文本文件看起來像這樣:
託尼·蓋迪斯
05/24/12 100
05/30/12 300
07/01/12 - 300
//控制檯輸出看起來像這樣
個託尼·蓋迪斯
05/24/12 100
05/30/12 300
07/01/12 -300
07/01/12 -300 //這不應該在這裏!!!!!
-200 //應該導致100
我能做些什麼來糾正這一點,爲什麼它的發生。 在此先感謝。
「咕噥咕噥兩次」 - >'EOF()'濫用。不要使用'eof()'。這個不成立。請檢查您的輸入操作。 –
'文件>>日期>>金額; iss >> date >> amount;'你從文件中提取兩次,從stringstream中提取一次。爲什麼? – jrok
我仍然在試着看這個代碼如何用那個輸入生成那個輸出。 ..我仍然沒有看到它。如果有什麼,我希望它輸出*少*數據比你想要的,沒有更多的,沒有其他的具體原因,除了多餘的'文件>>日期>>數量* *內循環,你明顯忽略刪除時添加每在線處理。等等...現在我明白了。如果 – WhozCraig