なぜstringstreams rdbuf()は、str()を与えてくれた異なる出力?
-
05-09-2019 - |
質問
私は、このコード
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掘
ss.rdbuf():hej med掘
がこの理由は何でしょうか?ではostreamsの定義はオペレーター私の目を出力する機能がございますのでもしている場合は使用getline.
解決
ss.rdbuf()->str();
返コピーのすべてのバッファの内容です。
何をやってい std::cout << ss.rdbuf();
?
説明を参照のために
basic_ostream<charT,traits>& operator<<(basic_streambuf<charT,traits>* sb);
そこにある文字による文字からバッファに書き込もうとしostreamまで、eof/failィ/例外が発生します。
だき,誠にありがとうござい読み取らバフ.現在では残ります。
他のヒント
は、呼び出し、C ++ストリームI / O、ランガーとKreft の上で聖書から引用するとSTR()ストリームバッファ上(RDBUFによって返さすなわち事は())(私の版で72ページ)、「非常に直観に反するように動作します」。完全な物語のために、あなたは本を読んでする必要があります。
あなたはここで満足のいく答えを得られない場合は、Usenetグループを試してみます:
の<のhref = "のhttp://グループ。 google.com/group/comp.lang.c++.moderated」のrel = "nofollowをnoreferrer"> http://groups.google.com/group/comp.lang.c++.moderated の
所属していません StackOverflow