1

そのため、整数のみを受け入れるループを作成しようとしていますが、最初は正常に動作しますが、整数ではないものが文字列ストリームに入力されるとすぐに、正しい入力が使用されていても if ステートメントをスキップし続けます。何か不足していますか?

# include "stdafx.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

using namespace std;


int main()
{
  string str;
  stringstream ss;
  int a;


  for(;;)
    {
      getline(cin, str);
      ss<<str;
      if (ss>> a)
        {
          cout<<"okay";
          break;
        }
      cout<<str<<endl;//debugging (prints the correct input
      str.clear();    //
      ss>>str;        //
      cout<<str<<endl;// doesn't print anything but the endl space
      cout<< "try again";
ss.str("");
}

}
4

1 に答える 1

0

次の行を読む前に がクリアされるように、ループss.str("");内に移動します。forstringstream

}貼り付けたコードには余分なものもあります。おそらくそれは、その行がループの外に出た方法に関連しています。

または、次を使用できます。

ss.str(str);

stringstream追加するのではなく、入力から を入力し>>ます。

于 2013-06-28T20:43:33.417 に答える