Loops 检查输入是否为整数循环

Loops 检查输入是否为整数循环,loops,if-statement,input,int,stringstream,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; stri

因此,我尝试创建一个只接受整数的循环,它最初工作正常,但一旦输入了非整数的字符串流,它将持续跳过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("");
}

}
#包括“stdafx.h”
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串str;
细流ss;
INTA;
对于(;;)
{
getline(cin,str);
(甲)
{
cout在
for
循环中移动
ss.str(“”;
),以便在读取下一行之前清除
stringstream

在粘贴的代码中还有一个额外的
}
。这可能与该行如何结束在循环之外有关

或者,您可以使用:

ss.str(str);

为了从输入中填充
stringstream
,而不是用
>

oops追加它,额外的{来自复制/粘贴错误。我在for循环中移动了ss.str(“”),但仍然存在相同的问题。