그래서 while 루프를 사용하여 벡터로 텍스트 파일의 데이터를 읽습니다.while 루프를 사용하여 텍스트 파일에서 데이터 읽기
원래 나는이 방법을 설정 코드를했다 :
iftream infile;
while(infile) // or even if i do while(!infile.eof())
{
infile>>data;
vector1.push_back(data); //adding data in to the vector
}
을 - 그러나 이것은 어떤 이유로 두 번 텍스트 파일의 마지막 항목에 읽어 하나의 작은 문제가 발생했습니다.
하지만이 방법은 모든 것을 코드 세트가있는 경우 잘 작동 :
iftream infile;
while(infile>>data)
{
vector1.push_back(data); //adding data in to the vector
}
왜 첫 번째 코드가 두 번 마지막 항목에서 읽고 있는가?
마지막 항목을 두 번 읽지 않습니다. 오히려 * 가장 최근에 읽은 * ** 실패 ** 사실을 무시한 다음 마지막으로 성공한 반복에서 읽기를 맹목적으로 삽입합니다. 추출의 성공 여부를 루프의 조건으로 테스트함으로써 문제를 피할 수 있습니다. 즉, 사용하기 전에 추출물의 유효성을 검사하십시오 (두 번째 코드 단편과 첫 번째 코드 단편은 * 않습니다 *). – WhozCraig
@WhozCraig 첫 번째 스 니펫이 있더라도 .. while 루프는 읽지 않아도 될 것입니다. 반면 while (! infile.eof())는 파일의 끝이 아니라 루프를 수행한다는 것을 의미하지만 파일 끝에는 루프를 건너 뜁니다. .. – psj01
아닙니다. 링크 된 복제본은 솔직히 왜 루프 제어에서 eof 또는 eof-logic을 사용하지 않는지에 대한 가장 좋은 설명입니다. 'inifile'이라는 표현은'! inifile.fail()'과 동의어로 bad-bit 나 fail-bit가 설정되어 있지 않은 한 사실입니다. 어느 것도 아직 설정되지 않았기 때문에 (당신은 * eof를 넘어서서 읽으 려하지 않았고 다른 실패는 없었습니다), 그 표현은 여전히 사실입니다. – WhozCraig