2013-11-28 5 views
0

파일에서 정수를 읽는 데 문제가 있습니다. 나의 지식에 관해서는 그것이 효과가있다. 여기서 내가 뭘 잘못했는지 말해 줄 수 있니? 읽기가 아닌 경우파일에서 읽을 수 없습니다.

if (listFileStream >> fileCount) { 
    process(fileCount); 
} 

: 파일의 첫 번째 줄 당신은 항상 당신이 시도가 성공 읽어 확인해야합니다 (28)

+0

한 번에 한 줄씩 읽으십시오. [here] (http://www.cplusplus.com/doc/tutorial/files/)를 참조하십시오. –

+0

변수 유형을 문자열로 변경하면 다음과 같이 나타납니다. 'fileCount = "ÿþ2"' –

+2

@SankaD 파일의 시작 부분에 예기치 않은 문자가 있습니다. 심지어 Byte Order Mark (BOM) 일 수도 있습니다. – john

답변

2

하더라도 그것은 단지 0을 출력

int fileCount = 0; 
    ifstream listFileStream (fileName); 

    if (listFileStream.is_open()) { 

      listFileStream >> fileCount; 
      cout << fileCount; 

    } 

성공적으로 복구를 시도하거나 오류를보고 할 수 있습니다. 첫 번째 문자를 좋은 상태로 스트림을 복원하고 무시 :

listFileStream.clear(); 
listFileStream.ignore(); 

모든 입력 시도가 무시 될 수있는 좋은 상태로 스트림을 복원하지 않고 여기에 당신이 복구를 시도 할 수있는 하나의 방법입니다. 문제가되는 문자가 제거되면 다시 읽습니다.

관련 문제