1
#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'} 写入 stringstream,然后将其读出到 int i,我不会取回 4。上面的代码有什么问题?

4

1 回答 1

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;
于 2012-06-08T19:10:17.867 回答