C - 检查CIN是否有错误
C++ - Check cin for mistakes
我有一个段循环,如果用户输入错误,则重新启动。
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);
两个变量都是整数,如果数字低于0或以上的数字,则可以工作,但是如果用户输入字符,则它不起作用,因为它启动了无限循环。
尝试此
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);
}
注意:
不要忘记包括
#include<limits>
您应该使用ignore()和clear()函数清除流并忽略任何东西,直到' 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);
甚至更好地包含限制标题文件并使用以下内容:
#include <limits>//add this to your includes
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( numeric_limits<streamsize>::max(), 'n');//extract anything until the 'n' occurs
}
}while(hiba);
相关文章:
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- C++ LeetCode #377 的 DP 解决方案中,此代码是否有错误?
- 使用std::tie进行类似golang的错误处理,同时返回结果,是否有缺点?(C++11)
- 我的随机生成器是否不工作,或者我决定人/骨架是否击中对手的方式是否有错误
- git-是否有互联网上某处所有可能错误的列表
- 使用向量循环时,是否有错误
- 是否有可能避免最终不会运行的 c++ 模板函数部分中的错误?
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- 此代码是否有逻辑错误
- STL 中是否有任何错误代码异常
- C - 检查CIN是否有错误
- 检查输入的文件是否有任何错误
- GCC -E -MD是否有错误,或者我缺少一些东西
- C ++ porgram 不会运行,我的构造函数是否有错误
- 当设置-fno-elide构造函数时,clang Xcode 4.4.1是否有错误
- QMutexLocker 是否返回错误代码(如果有)
- 当使用头与完整矩阵复制源时,mophological操作是否有错误
- 如果条件检查是否有错误
- C++十进制检查语句是否有错误
- Cocos2d-X的testcpp代码是否有错误?