所以我试图创建一个只接受整数的循环,它最初工作正常,但只要不是整数的东西进入字符串流,它就会连续跳过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("");
}
}
答案 0 :(得分:0)
在ss.str("");
循环内移动for
,以便在您阅读下一行之前清除stringstream
。
您粘贴的代码中还有一个额外的}
。也许这与那条线在循环之外的结局有关。
或者,您可以使用:
ss.str(str);
从输入中填写stringstream
,而不是使用>>
附加到<{1}}。