【发布时间】:2013-10-28 22:51:33
【问题描述】:
标准中是否对以下行为有任何解释?
以下代码:
#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 并且两者的行为方式相同,我已经尝试过该示例。
感谢您的帮助!
【问题讨论】:
-
奇怪,这段代码在我的机器上用 g++ 打印“1 2 3\n1 2\n”。
-
@jma127 我在像 P.An. 这样的 Debian 上使用 g++ 4.8.1 得到了同样奇怪的结果
标签: c++ stl ostringstream