첫 번째 사항 - 이진수가있는 텍스트 파일이 각 행에 하나씩 있습니다. 나는 그들을 읽고 C++ 프로그램에서 그들을 요약하려고 노력하고있다. 나는 그들을 10 진수로 변환하고 그것들을 추가 한 함수를 작성했다. 그리고 함수의 ok를 확실히 알고있다. 그리고 여기 내 문제입니다 - 텍스트 파일을 읽는 두 가지 방법, 나는 다른 결과를 얻을 (이러한 결과의 하나가 바로입니다) [내 기능 소수점입니다()] :while (! file.eof())와 while (file >> variable)의 차이점
ifstream file;
file.open("sample.txt");
int sum = 0;
string BinaryNumber;
while (!file.eof()){
file >> BinaryNumber;
sum+=decimal(BinaryNumber);
}
하고 그런 식으로 내 합계는 너무 크지 만 소량입니다.
ifstream file;
file.open("sample.txt");
int sum = 0;
string BinaryNumber;
while (file >> BinaryNumber){
sum+=decimal(BinaryNumber);
}
이렇게하면 올바른 금액을 얻을 수 있습니다. 몇 가지 테스트를 한 후에, while 루프는 while 루프가 루프를 반복하는 동안 하나의 반복을 작성한다는 결론에 도달했습니다. 그래서 제 질문은 - 텍스트 파일에서 읽는 두 가지 방법의 차이점은 무엇입니까? 첫 번째 while 루프가 왜 나에게 잘못된 결과를주고 왜 반복되는 반복이 될 수 있습니까?
'file >> 변수는 입력 후'file'의 상태를 검사합니다. 입력이 잘못되었거나 EOF를 눌렀을 때, 조건은'거짓 '입니다. –
첫 번째 예제는'eof()'가 이전 읽기 작업의 상태를 반환하고 스트림의 끝을 읽을 때까지 false를 반환하지 않으므로 실패합니다. –