나는 뱅킹 프로그램을 수행하고 있으며 입금 기능에 텍스트 파일을 읽고 famount에 금액을 저장하는 다음 코드가 있습니다. 유일한 문제는 프로그램을 실행하고 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