2014-10-01 3 views
0

텍스트 파일을 구문 분석 중이므로 어떤 이유로 string::compare()이 의도 한대로 작동하지 않습니다.텍스트 파일의 문자열 비교

텍스트 파일 (내부에있는 동안 루프에서 호출) http://pastebin.com/raw.php?i=WZDWmb56

읽기 기능 :

"***"에 도달 할 때마다
string StopName = "***"; 
    bool Person::ReadOnePersonFromFile(ifstream& fin) 
    { 
     getline(fin,m_name); 
     cout << m_name << endl; 
     if(m_name == StopName) 
      return false; 
     fin >> m_id; 
     fin.ignore(50,'\n'); 
     return true; 
    } 

, if(m_name == StopName)true를 반환하지 않습니다. 무슨 일 이니?

이 함수는 Windows (Visual Studio)에서 작동합니다. 나는 현재 리눅스에서 이것을 컴파일 중이다. 텍스트가 저장되는 방식과 관련이 있습니까? 당신이 StopName을 비교하기보다는 코드에서 Stop, 그래서 것 같은

답변

0

내 대답을 찾았습니다. 이것은 개행 문자가 Windows에서 인코딩되는 방식 때문이라고 생각합니다.

Windows: \r\n (CR + LF) 
Linux: \n 
Mac: \r 

나는 dos2unix와 유닉스 텍스트 파일로 내 Windows 텍스트 파일을 변환해야했다. 프로그램은 잘 작동합니다.

0

그것은 지금까지 (StopStopName는 같은 것이 아니다 가정)을 선택하지 "***"보인다.

+0

죄송합니다. 이것은 실수였습니다. 'StopName'으로되어 있습니다. –