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 に答える