忽略一行输入中的某些输入

时间:2020-01-13 23:03:58

标签: c++

我正在制作一个仅接受一对整数输入的函数。这将在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));

1 个答案:

答案 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));
}