2013-06-05 2 views
4

나는 다음과 같은 코드가 있습니다.stringstream에 공백이 허용되지 않습니까? 내가 대신 "1A B 형 C"의 "1A"를 참조</p> <pre><code>std::stringstream ss; ss << 1 << "a b c"; std::string result; ss >> result; std::cout << result << std::endl; </code></pre> <p>:

나는 어딘가에 ss가 있어야한다고 읽었습니다. < < std :: noskip. 그러나 도움이되지 않습니다.

아이디어가 있으십니까?

미리 감사드립니다.

+0

사용'대신 getline' 얻을. –

답변

8
std::getline(ss, result); 

또는, 단지 string

result = ss.str(); 
+1

얼마 전에'std :: noskipws'에 문제가 생겼습니다.'getline'을 사용하기에 충분한 문서를 찾지 못했습니다. – Djon

+4

noskipws는 생각대로 문자열에 영향을주지 않습니다. 라인 대신에 '1a'가 여전히 읽혀질 것입니다. 스트림이 공백으로 시작되는 경우에 차이가 발생합니다. 'aa bb cc'를 입력하면'noskipws'가없이'aa'가 읽히고 noskipws -empty string! –

+2

noskipws는 한 문자를 읽는 데 유용합니다. –

0
//Try using this for getting whitespace in string 
    string input; 
    cout<<"\nInput : "<<input; 
    getline(cin,input); 
    string result,label; 
    std::stringstream sstr(input); 
    while(sstr>>label){ 
     result=result+label+" "; 
    } 
cout<<"\nResult : "<<result; 
관련 문제