为什么我的输出是该有人能解释一下吗?我怎么会纠正我的输出?

StackOverflow https://stackoverflow.com/questions/2842728

  •  27-09-2019
  •  | 
  •  

在此切片的代码我得到

的输出
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;
有帮助吗?

解决方案

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();

其他提示

当您写入stringstream的输入指针(所以tellg)被设置为-1的第二时间和故障位被设置。这意味着无论是第二写入也不第二读取成功。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top