C++ C++;-检查有无错误

C++ C++;-检查有无错误,c++,cin,C++,Cin,我有一个while循环,如果用户输入错误,它将重新启动 do{ cerr<<"Input the numbers divided by a space"<<endl; cin>>number1>>number2; hiba=(cin.fail() || number1<1 || number1>100 || number2<1 || number2>100); if(fail){

我有一个while循环,如果用户输入错误,它将重新启动

do{
    cerr<<"Input the numbers divided by a space"<<endl;
    cin>>number1>>number2;
    hiba=(cin.fail() || number1<1 || number1>100 || number2<1 || number2>100);
    if(fail){
        getline(cin, sz);
        cerr<<"Wrong input"<<endl;
    }
}while(fail);
do{
cerrnumber2;
hiba=(cin.fail()| | number1100 | | number2100);
如果(失败){
getline(cin,sz),;
cerr试试这个

int main()
{
    int tanulokszama,versenyekszama;
    bool hiba;
    string sz;
    do{
        cerr<<"Adja meg az elsõ sort!"<<endl;
        cin>>tanulokszama>>versenyekszama;
        hiba=(cin.fail() || tanulokszama<1 || tanulokszama>100 || versenyekszama<1 || versenyekszama>100);
        if(hiba){
            cin.clear();
            cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
            //getline(cin, sz);
            cerr<<"Rossz adatot adott meg!"<<endl;
        }
    }while(hiba);
}
intmain()
{
国际塔努洛克萨马,versenyekszama;
布尔希巴;
字符串sz;
做{
塞尔沃森耶克萨马;
hiba=(cin.fail()| tanulokszama100 | | versenyekszama100);
国际单项体育联合会(hiba){
cin.clear();
cin.ignore(std::numeric_limits::max(),'\n');
//getline(cin,sz),;
cerr试试这个

int main()
{
    int tanulokszama,versenyekszama;
    bool hiba;
    string sz;
    do{
        cerr<<"Adja meg az elsõ sort!"<<endl;
        cin>>tanulokszama>>versenyekszama;
        hiba=(cin.fail() || tanulokszama<1 || tanulokszama>100 || versenyekszama<1 || versenyekszama>100);
        if(hiba){
            cin.clear();
            cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
            //getline(cin, sz);
            cerr<<"Rossz adatot adott meg!"<<endl;
        }
    }while(hiba);
}
intmain()
{
国际塔努洛克萨马,versenyekszama;
布尔希巴;
字符串sz;
做{
塞尔沃森耶克萨马;
hiba=(cin.fail()| tanulokszama100 | | versenyekszama100);
国际单项体育联合会(hiba){
cin.clear();
cin.ignore(std::numeric_limits::max(),'\n');
//getline(cin,sz),;
cerr您应该使用和函数清除流并忽略任何内容,直到'\n'

试试这个:

do{
    cerr<<"Adja meg az elsõ sort!"<<endl;
    cin>>tanulokszama>>versenyekszama;
    hiba=(cin.fail() || tanulokszama<1 || tanulokszama>100 || versenyekszama<1 || versenyekszama>100);
    if(hiba){
        cin.clear();//clear the error flags of the stream
        cerr<<"Rossz adatot adott meg!"<<endl;
        cin.ignore( 256, '\n');//ignore until '\n'
    }
}while(hiba);
do{
塞尔沃森耶克萨马;
hiba=(cin.fail()| tanulokszama100 | | versenyekszama100);
国际单项体育联合会(hiba){
cin.clear();//清除流的错误标志
cerr您应该使用和函数清除流并忽略任何内容,直到'\n'

试试这个:

do{
    cerr<<"Adja meg az elsõ sort!"<<endl;
    cin>>tanulokszama>>versenyekszama;
    hiba=(cin.fail() || tanulokszama<1 || tanulokszama>100 || versenyekszama<1 || versenyekszama>100);
    if(hiba){
        cin.clear();//clear the error flags of the stream
        cerr<<"Rossz adatot adott meg!"<<endl;
        cin.ignore( 256, '\n');//ignore until '\n'
    }
}while(hiba);
do{
塞尔沃森耶克萨马;
hiba=(cin.fail()| tanulokszama100 | | versenyekszama100);
国际单项体育联合会(hiba){
cin.clear();//清除流的错误标志

请翻译成英语,写下你所说的“它起作用”是什么意思。请翻译成英语,写下你所说的“它起作用”是什么意思。如果已经为您解决了问题,请不要忘记将其标记为“答案”。但是现在,如果两个数字都低于0或高于100,则在再次请求输入后,我必须按enter键两次。如果删除getline,则它适用于错误的数字,但不适用于字符。它会启动无限循环。我更改了代码,尝试新的,它不会进入infini如果两个输入都是字符,那么它会输出“Adja meg az elsõsort!”和“Rossz adatot adott meg!”两次。如果已经为您解决了问题,请不要忘记将其标记为“答案”。但是现在,如果两个数字都低于0或高于100,则在再次请求输入后,我必须按enter键两次。如果删除getline,则它适用于错误的数字,但不适用于字符。它会启动一个无限循环。我更改了代码,尝试新的,它不会进入如果两个输入都是字符,那么它会打印两次“Adja meg az elsõsort!”和“Rossz adatot adott meg!”。