一个关于ostringstream的问题

bandit110 2004-02-20 01:58:58
#include <iostream>
#include <sstream>

void main()
{
//char s[16];
ostringstream ostr;
#if 1
for(int i = 1;i<=9;i++)
{
for(int j = 1;j <= i; j++)
{
// ostr.rdbuf()->freeze(0);
ostr<<i<<'X'<<j<<'='<<i*j<<'\0';
cout<<ostr.str();
if(j < i)cout<<" ";
else if(j == i)cout<<endl;


}
}
#endif

}

输出结果如下,

1X1=1
1X1=1 1X1=1
1X1=1 1X1=1 1X1=1
1X1=1 1X1=1 1X1=1 1X1=1
1X1=1 1X1=1 1X1=1 1X1=1 1X1=1
1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1
1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1
1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1
1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1 1X1=1


我本来以为结果应该是
1X1=1
2X1=2 2X2=4
3X1=3 3X2=6 3X3=9
4X1=4 4X2=8 4X3=12 4X4=16
5X1=5 5X2=10 5X3=15 5X4=20 5X5=25
6X1=6 6X2=12 6X3=18 6X4=24 6X5=30 6X6=36
7X1=7 7X2=14 7X3=21 7X4=28 7X5=35 7X6=42 7X7=49
8X1=8 8X2=16 8X3=24 8X4=32 8X5=40 8X6=48 8X7=56 8X8=64
9X1=9 9X2=18 9X3=27 9X4=36 9X5=45 9X6=54 9X7=63 9X8=72 9X9=81

好像是因为cout<<ostr.str();调用这句后,freeze了ostr,请问怎么解决?

...全文
185 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧