2013-07-31 5 views
2

그래서 끝까지 도달 할 때까지 input_file이라는 파일에서 읽으려고합니다. while (!input_file.eof())을 사용해 보았지만 무한 루프가 발생했습니다. 포럼에서 둘러보고 while (getline(input_file, line))을 사용해 보았지만 빈 줄만 반환합니다. 나는 다른 질문처럼 getline()과 >> 연산자를 사용하지 않았다. 이 문제를 어떻게 해결합니까? 내 코드는 다음과 같습니다.빈 줄 또는 무한 루프를 반환하는 EOF

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

// Main program 
void CalfFlac(ifstream& input_file) { 
    string text; 
    string line; 
    while (getline(input_file, line)) { 
    text += line; 
    } 
    cout << text << endl; 
} 

int main() { 
    ifstream input_file; 
    input_file.open("calfflac.in"); 

    CalfFlac(input_file); 
} 

input_file에는 한 줄의 Confucius say: Madam, I'm Adam. 뒤에 캐리지 리턴이 있습니다.

도움 주셔서 감사합니다.

추신 : 해결책이 간단하다면 더 좋을 것 같습니다. 꽤 간단한 문제인 것처럼 보입니다.

+0

난 당신이 설명하는 문제를 재현 할 수 있습니다. 'crlf','lf','cr'와 같은 다양한 줄 끝 조합으로 시도해 보았습니다. 이 플랫폼을 테스트중인 플랫폼은 무엇입니까? – greatwolf

+0

파일이 성공적으로 열 었는지 확인 했습니까? 'assert (input_file);' – greatwolf

+0

릴리스 모드에서 쉽게 실패 할 수 있기 때문에 "assert"를 사용하여 파일을 검사하지 않는 것이 가장 좋습니다! –

답변

3

편집 : 올바른 파일 이름을 가지고 있는지 확인하십시오! 난 가짜 파일 이름을 시도하고 당신의 설명으로 빈 줄을 인쇄. 나는 올바른 파일 이름으로 코드를 시도하고 주요 추가 기능에서 나를

이 줄을했다 :

int main() { 
    ifstream input_file; 
    input_file.open("calfflac.in"); 

    if(!input_file) 
    cout << "File path is wrong!"; 

    CalfFlac(input_file); 
} 
관련 문제