有人可以向我解释为什么我的输出是这个吗?我该如何纠正我的输出?

时间:2010-05-16 06:02:02

标签: c++ stringstream

在这段代码中,我得到了

的输出
bbb 55 66 77 88
aaa

我期望和想要的输出是

bbb 55 66 77 88
bbb

因为我将sslog[0]重新分配到log[1]。 所以我的问题是为什么输出与我的期望不同,我怎么做 把它变成我想要的东西?

      int w,x,y,z;
      stringstream ss (stringstream::in | stringstream::out);
      string word;
      string log[2];
      log[0]="aaa 11 22 33 44";
      log[1]="bbb 55 66 77 88";

      ss<<log[0];
      ss>>word;

      int k=0;
      ss>>w>>x>>y>>z;
      k++;

      ss<<log[k];
      cout<<log[k]<<endl;
      ss>>word;
      cout<<word<<endl;
      return 0;

2 个答案:

答案 0 :(得分:1)

何时

ss >> w >> x >> y >> z;

已执行,没有内容可供操作,ss.good()返回false,表示需要调用ss.clear()以确保一切正常,我们可以继续。

然而,鉴于你做了

ss.clear();
ss<<log[k];

ss的内容将是

aaa 11 22 33 44bbb 55 66 77 88

如果你想这样,那很好。但也许你期望它包含

bbb 55 66 77 88

完成
ss.str(log[k]);
ss.clear();

答案 1 :(得分:0)

第二次将输入指针(tellg)设置为-1并设置失败位时,写入字符串流。这意味着第二次写入和第二次读取都不会成功。