문제

이 코드가 있습니다.

int main()
{
    std::string st;
    std::stringstream ss;
    ss<<"hej hej med dig"<<std::endl;

    std::getline(ss,st,' ');
    std::cout <<"ss.rdbuf()->str() : " << ss.rdbuf()->str();
    std::cout <<"ss.rdbuf() : " << ss.rdbuf();
    return 0;
}

이 출력을 제공합니다

ss.rdbuf ()-> str () : hej hej med dig

ss.rdbuf () : Hej Med Dig

하지만 왜 그게? 타조가 연산자의 정의 때문입니다

도움이 되었습니까?

해결책

ss.rdbuf()->str();

모든 버퍼 컨텐츠의 사본을 반환합니다.

무엇을하고 있습니다 std::cout << ss.rdbuf();?

설명을 참조하십시오

basic_ostream<charT,traits>& operator<<(basic_streambuf<charT,traits>* sb);

쓰기/예외가 발생할 때까지 버퍼에서 문자별로 문자를 읽고 타조에 씁니다.

당신은 이미 버프에서 한 단어를 읽었습니다. 이제 REST 부분을 읽습니다.

다른 팁

C ++ 스트림 I/O의 성서에서 인용 할 수 있습니다. Langer와 Kreft, 스트림 버퍼에서 str ()를 호출합니다 (즉, rdbuf ()에 의해 반환 된 것은 매우 반 직관적 인 방식으로 행동합니다 (내 판에서 72 페이지). 전체 이야기를 위해서는 책을 읽어야합니다.

만족스러운 답변을 얻지 못하면 USENET 그룹을 사용해보십시오.

http://groups.google.com/group/comp.lang.c++.moderated

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top