标准中是否对以下行为有任何解释?
以下代码:
#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 并且两者的行为方式相同,我已经尝试了该示例。
谢谢你的帮助!