2014-11-16 2 views
0

입력 문자열을 가져 와서 공백을 제거하려고했습니다. 그것은 공백에 도달 할 때를 제외하고는 그 후에 모든 것을 삭제합니다.공백을 제거하는 데 문제가 있습니다. C++

여기 내 코드입니다 (유래에 비슷한 주제를 내려서) : 예를 들어

string removeSpaces(string s){ 
    s.erase(remove(s.begin(),s.end(), ' '),s.end()); 
    return s; 
} 

, I 입력 "1 +1"이 "1"을 반환합니다. 어떻게 해결할 수 있을까요? 제거 공백없이 입력 동일한 문자열을 반환

#include <iostream> 
#include <string> 
#include <algorithm> 

using namespace std; 

string input; 

string removeSpaces(string s){ 
    s.erase(remove(s.begin(),s.end(), ' '),s.end()); 
    return s; 
} 

int main(){ 
    getline(cin, input); 
    removeSpaces(input); 
    cout << input; 
} 

:

는 여기에 내가 뭘하려의 전체 예입니다.

+1

그 코드는 저에게 잘 작동합니다. – Galik

+0

맹목적으로 복사하는 대신 다른 사람의 코드가 의미하는 바를 이해하려고하면됩니다. :) – mlwn

+1

어떻게's'를 얻었습니까? 'cin >> s;'가 예상대로 작동하지 않을 수도 있습니다. 대신'getline()'을 시도하십시오. –

답변

3

함수 removeSpaces은 값을 입력 받아 (복사본을 만듭니다) 입력 문자열을 변경하지 않습니다. 공백을 제거한 문자열이 함수에서 반환되므로 대신 사용해야합니다. 시도해보십시오 :

string output = removeSpaces(input); 
cout << output; 
+0

완벽하게 작동합니다! 고맙습니다! –

관련 문제