我正在制作一个仅接受一对整数输入的函数。这将在while循环中重复进行,直到用户输入“ -5 -5”。如果我输入“ 5 7 -4 3 10 1 -2 0 -5 -5”,它将全部用作有效输入。并且如果输入中包含诸如“ ep 5 7 -4 3 10 1 -2 0 -5 -5”之类的字符,我的代码将忽略“ ep 5 7 -4 3 10 1 -2 0 -5- 5“。相反,我只想跳过第一对“ e p”,而仍然保留其余的对。
“ e p erewr djfe -4 3 ekjea 23 -2 0 -5 -5”怎么办?在这种情况下,我只需要“ -4 3 -2 0 -5 -5”。我该怎么做?谢谢。
这是我的代码:
int input1 = 0;
int input2 = 0;
do {
cin >> input1 >> input2;
if (cin.fail()) { // This will handle non-int cases
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
} else {
setValues(input1, input2);
}
} while((input1 != -5 && input2 != -5));
答案 0 :(得分:1)
我提出的解决方案不带cin.fail(),而是使用string,stoi并尝试catch块。
#include <iostream>
#include <limits>
#include <string>
using namespace std;
int main()
{
string input1;
string input2;
int in1,in2;
bool ok=false;
bool ok2=false;
bool ignore=false;
do
{
ok=false;
cin>>input1;
try
{
in1=stoi(input1);
ok=true;
}
catch(...)
{
}
cin>>input2;
ok2=false;
if(ok)
{
try
{
in2=stoi(input2);
ok2=true;
}
catch(...)
{
}
if(ok2)
setValues(in1,in2);
}
}
while((in1 != -5 && in2 != -5));
}