#include <iostream>
#include <sstream>
#include <limits>
#include <cstdlib>

using namespace std;

void broj_na_artikli(int &artikli);
bool is_num(const string &s);

int main()
{
    int artikli;
    broj_na_artikli(artikli);
    for(int i = 0; i < artikli; i++)
        cout << i << endl;
}

void broj_na_artikli(int &artikli){
    while(true){
        string vlez;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cin >> vlez;

        if(is_num(vlez)){
            artikli = atoi(vlez.c_str());
            if(artikli > 100 || artikli < 1){
                cout << "Error, try again." << endl;
            }
            else{
                break;
            }
        }
        else{
            cout << "Error, try again." << endl;
        }
    }
}

bool is_num(const string &s){
    string::const_iterator it = s.begin();
    while(it != s.end() && isdigit(*it)){
        ++it;
    }
    return !s.empty() && it == s.end();
}


无论您输入什么作为第一个结果,它都不会对输入作出反应,该程序实际上会跳过整个代码,然后返回到开头,并再次请求其他输入。我在这里做错了什么?任何帮助表示赞赏。

最佳答案

这行:

cin.ignore(numeric_limits<streamsize>::max(), '\n');


阻止,直到您输入'\ n'。

10-08 00:59