以下の動作について、標準に説明はありますか?
次のコード:
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
ostringstream os1;
ostringstream os2;
os1 << 1 << " " << 2;
os2 << 1 << " " << 2 << " " << 3;
const char *p = os1.str().c_str();
cout << os2.str() << endl;
cout << p << endl;
return 0;
}
出力を表示します。
1 2 3
1 2 3
ただし、次のように表示されると思います。
1 2 3
1 2
os1 オブジェクトが何らかの形で os2 の影響を受けているように見えます。os2.str() 呼び出しを削除すると、サンプルは正しく動作します。
Solaris Studio 12.2 と G++ 4.8.1 の例を試してみましたが、どちらも同じように動作します。
ご協力いただきありがとうございます!