2014-02-20 2 views
1

이 솔루션은 스택 오버플로 및 문자열에서 문자를 제거하기위한 다른 포럼에서 발견되었습니다. 내가 할 줄 문자열에서 공백을 제거하고 싶어 말 : currentLine 문자열의 이름입니다지우기 및 제거를 사용하여 문자열에서 문자 제거

currentLine.erase(std::remove(currentLine.begin(), currentLine.end(), ' '), currentLine.end()); 

합니다.

것은 이런 종류의 사람들을 위해 일을 표시하지만 난 그것을 사용하는 경우 내가 얻을 : 컴파일 오류로

/local/yrq12edu/Desktop/Bens_C++_Utilities/simuPOPtoFASTA/simuPOP2FASTA.cpp|54|error: cannot convert 'std::basic_string<char>::iterator {aka __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >}' to 'const char*' for argument '1' to 'int remove(const char*)'| 

. 필자는 iterator가 std :: remove 함수로 인해 반환되는 iterator와 관련이 있다고 생각합니다. 그러나 erase 메서드로는 작동하지 않지만 분명히 작동해야합니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

currentLine의 선언을 보여 주실 수 있습니까? – Borgleader

+3

간단한 테스트 케이스를 게시하십시오. – juanchopanza

답변

6

어떤 헤더가 포함되어 있습니까? 컴파일러에서보고있는 유일한 std::remove<cstdio> (아마도 <iostream> 또는 다른 iostream heaaders 중 하나에 포함됨)의 것입니다. <algorithm>을 포함하면 올바른 것을 찾아야합니다.