C++ 有人能解释一下为什么我的输出是这样的吗?我将如何更正我的输出?
在这段代码中,我得到了C++ 有人能解释一下为什么我的输出是这样的吗?我将如何更正我的输出?,c++,stringstream,C++,Stringstream,在这段代码中,我得到了 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];
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;
intw,x,y,z;
stringstream ss(stringstream::in | stringstream::out);
字符串字;
字符串日志[2];
日志[0]=“aaa 11 22 33 44”;
日志[1]=“BBB55667788”;
单字;
int k=0;
ss>>w>>x>>y>>z;
k++;
ss当您第二次写入stringstream时,输入指针(tellg)被设置为-1并且失败位被设置。这意味着第二次写入和第二次读取均未成功。当您在第二次将输入指针(tellg)设置为-1并设置失败位时写入stringstream。这意味着第二次写入和第二次读取均未成功。当
ss >> w >> x >> y >> z;
执行时,没有内容可供操作,ss.good()返回false,这表示需要调用ss.clear(),以确保一切正常,我们可以继续
然而,考虑到你这样做
ss.clear();
ss<<log[k];
如果你想这样,好吧。但也许你希望它包含
bbb 55 66 77 88
这是由
ss.str(log[k]);
ss.clear();
什么时候
执行时,没有内容可供操作,ss.good()返回false,这表示需要调用ss.clear(),以确保一切正常,我们可以继续
然而,考虑到你这样做
ss.clear();
ss<<log[k];
如果你想这样,好吧。但也许你希望它包含
bbb 55 66 77 88
这是由
ss.str(log[k]);
ss.clear();
我能做些什么来避免这种情况发生吗?为什么在使用原始值之前覆盖word?这不是我的完整代码,只是导致错误的一个片段,我确实打算重写,做一些事情,重写,在循环中做一些事情,所以可以重用“word”吗我能做些什么来避免这种情况发生吗?为什么在使用原始值之前覆盖word?这不是我的完整代码,只是导致错误的一个片段,我确实打算重写,做一些事情,重写,在循环中做一些事情,所以可以重用“word”吗