为什么我的输出是该有人能解释一下吗?我怎么会纠正我的输出?
-
27-09-2019 - |
题
在此切片的代码我得到
的输出bbb 55 66 77 88
aaa
我希望和需要的输出是
bbb 55 66 77 88
bbb
,因为我重新分配ss
从log[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的第二时间和故障位被设置。这意味着无论是第二写入也不第二读取成功。
不隶属于 StackOverflow