私はこのコードは、 ストリングストリームrdbuf()とstr()が私に異なる出力を与えているのはなぜですか?
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が
ss.rdbufを掘るMED():HEJ医学掘削
しかし、それはなぜですか?それはオペレータ<のstr()のostreamsの定義のために私は別の出力を与えますか? getlineを使っても、私の目では出力は同じになるはずです。
ああ。私が高価なC++の本の中でそれを見つけたという事実は、休暇中のImなので、私はgoogleしか持っていないので、私が理解した方法でオペレータ<<の行動を説明するサイトを見つけることができませんでした。私は実際にgetlineがストリームからdelimを使ってトークンを削除したと考えました。 – mslot
高価なC++の本を使用していませんでした。私はちょうどこの振る舞いがrbuf()が指定されておらず、このオーバーロード演算子<<の標準で見始めるようにしています。 – bayda
http://ra.dkuug.dk/jtc1/sc22/open/n2356/ - フリーC++の標準ドラフト – bayda