Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有人能解释一下为什么我的输出是这样的吗?我将如何更正我的输出?_C++_Stringstream - Fatal编程技术网

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”吗