#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'。