質問

MSVC 2005年、私は次のコードを持っています。

std::ostringstream stream("initial string ");
stream << 5;
std::cout << stream.str();

私は何を期待することはあります:

initial string 5

私は何を得ることはあります:

5nitial string

は、文字列とストリームの初期化、私は、ストリームが最初の文字列の末尾にその位置を移動させることを期待します。明らかに、STLは(初めてではない)私と一緒に同意しません。

そのような行動の目的は何ですか?このユースケースは何のために便利ですか?また、最初の文字列の末尾にストリーム位置を前進させるための方法はありますか?

役に立ちましたか?

解決

ostringstreamを使用して初期値を提供するだけの書き込みのために既存のファイルを開くようなものです。あなたはそこにいくつかのデータを持っており、特に指定しない限り、あなたの初期位置は、データの先頭になります。あなたはデータに求めることもできますが、最初に既存のデータの最後に書き込みポインタを置くか、あなたは常に既存のデータの最後に書き込みポインタを置きにios::ateを指定することができます。

ios::appを指定します

他のヒント

は、終了時にストリームカーソルを設定するために、コンストラクタの第二(オプション)のパラメータを指定することができます:

std::ostringstream stream("initial string ", std::ios::ate);

はこれを行う、最後まで追求するために、

stream.seekp(0, ios_base::end);
前に、なぜ書き込み位置のデフォルト値については、私は知りません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top