检查输入是否为整数循环

时间:2013-06-28 20:34:26

标签: loops if-statement input int stringstream

所以我试图创建一个只接受整数的循环,它最初工作正常,但只要不是整数的东西进入字符串流,它就会连续跳过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("");
}

}

1 个答案:

答案 0 :(得分:0)

ss.str("");循环内移动for,以便在您阅读下一行之前清除stringstream

您粘贴的代码中还有一个额外的}。也许这与那条线在循环之外的结局有关。

或者,您可以使用:

ss.str(str);

从输入中填写stringstream,而不是使用>>附加到<{1}}。