stringstream:为什么这段代码不返回4?

时间:2012-06-08 19:06:50

标签: c++ stringstream

#include <iostream>
#include <sstream>

using namespace std;

int get_4()
{
  char c = '4';
  stringstream s(ios::in);
  s << c;
  int i;
  s >> i;
  return i;
}

int main()
{
  cout << get_4() << endl;
}

转换对我不起作用。如果我将字符'4'或字符数组{'4','\ 0'}写入字符串流然后将其读出到int i,我就不会回复4.上面的代码出了什么问题?< / p>

1 个答案:

答案 0 :(得分:10)

因为您将stringstream设置为仅输入 - 无输出。

如果您在尝试之后检查fail()位以提取int,您会发现它不起作用:

 s >> i;
  bool b = s.fail();
  if( b )
      cerr << "WHOA DOGGIE!  WE BLOWED UP\n";

在您的代码中,更改:

stringstream s(ios::in);

为:

stringstream s;