在这段代码中,我得到了
的输出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;
答案 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并设置失败位时,写入字符串流。这意味着第二次写入和第二次读取都不会成功。