2012-01-16 1 views
0

내가 getline(file,line)에서 문자열을 비교하려고에서 다른 문자열로 문자열을 비교 :는 <code>std::string s="mmee"</code>와 파일 C++

if (line==s){} 

하지만이 실행되지 않습니다. 왜?? 파일 안에 내가 가지고 :

mmee 
hello 
hey 

공간을 줄이거 나 문자열 줄에서 입력하는 방법?

+0

"mmee hello hey"파일의 행이 있습니까? 왜냐하면 두 문자열이 일치해야하는 이유가 없기 때문입니다. –

+0

노 작업이 실행되지 않는다는 것을 어떻게 알 수 있습니까? –

+0

"이것은 실행되지 않습니다"라는 의미는 무엇입니까? 당신은 false를 반환 뜻, 코드의 라인에 도달하지 못했습니다, 런타임 오류 .... 뭐라구? 또한 디버깅을 시도 했습니까? –

답변

1

코드는 올바른 것입니다.

입력 파일을 확인하여 공백이나 공백이 없는지 확인하십시오.

+0

일부 사용 권한에 문제가있었습니다. –

0

우선 무엇이 그것이 실행될 것이라고 생각하십니까?

mmee 당신이 의 getline 라인 전체 라인뿐 아니라 mmee을 포함 할 때 안녕하세요 헤이는, 파일의 같은 라인의 일부입니다있다. 따라서 if 조건은 실패합니다.

트리밍 공백을 보려면 link을보십시오.

0

std::getline() 기본적으로 첫 번째 줄 바꿈 문자가 읽습니다.

getline(file, line, ' '); // not the space between single quote chars 

이 당신의 예제 파일의 "mmee"부분을 읽을 것 (헤이 안녕하세요 mmee) :이 같은 당신이 기능을 읽으려는되는 문자를 지정할 수 있습니다.

편집 : 귀하의 예를 읽는 방법입니다. 영업을 편집 한 사람들은 단지 입력 파일이 mmee\nhello\nhey

+0

합리적으로 가정하면, 세 단어는 모두 들여 쓰기가 아닌 별도의 줄에 있으므로 편집하기 전에 한 줄에 렌더링됩니다. –

0

당신은 ('', astring.begin(), astring.end())

표준 : 제거를 사용하여 공간을 제거 할 수 있다고 가정;

그 다음에 문자열을 비교할 수 있습니다. 링크 밖으로

검사 : 당신은 문자열에 비교할 수 http://www.cplusplus.com/forum/beginner/863/

: http://www.cplusplus.com/reference/string/string/compare/

+0

(astring.begin(), astring.end(), '') 공백이 있거나 없습니다/ –

+0

std :: remove가 e에서 작동하지 않습니다 –

+0

예 sapce가 '...이 링크를 확인하십시오 http : //www.cplusplus.com/forum/beginner/863/ –