📅  最后修改于: 2023-12-03 15:14:00.719000             🧑  作者: Mango
在使用 C++ 中的 cin 读取输入时,有时会出现输入不正确的情况,比如输入了一个字符串而不是一个数值类型。在这种情况下,程序可能会出现意想不到的错误。
为了避免这种情况,可以使用一些方法来检查输入是否正确。下面介绍几种常用的方法:
cin.fail() 方法可以检查上次输入是否成功。如果输入失败,该方法将返回 true,否则返回 false。
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Please enter a number: ";
cin >> num;
if (cin.fail())
{
cout << "Invalid input!" << endl;
cin.clear(); // 清空输入缓冲区
cin.ignore(1024, '\n'); // 忽略一定数量的字符直到遇到回车符
return 1;
}
cout << "The number you entered is " << num << endl;
return 0;
}
这里使用 cin.fail() 方法来检查输入是否失败。如果失败,输出 "Invalid input!",并清空输入缓冲区和忽略一定数量的字符直到遇到回车符。
类似于 cin.fail(),cin.good() 方法也可以检查上次输入是否成功。如果输入成功,该方法将返回 true,否则返回 false。
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Please enter a number: ";
cin >> num;
if (!cin.good())
{
cout << "Invalid input!" << endl;
cin.clear(); // 清空输入缓冲区
cin.ignore(1024, '\n'); // 忽略一定数量的字符直到遇到回车符
return 1;
}
cout << "The number you entered is " << num << endl;
return 0;
}
这里使用 !cin.good() 来检查输入是否成功。如果失败,输出 "Invalid input!",并清空输入缓冲区和忽略一定数量的字符直到遇到回车符。
使用后缀 ++ 可以检查输入是否正确。在读取一个数值类型时,如果输入不正确,cin 将自动将状态置为错误状态,并返回一个非数值类型的值。如果使用后缀 ++,该值将自增,即变成一个非法的值。
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Please enter a number: ";
cin >> num;
if (cin >> num++)
{
cout << "The number you entered is " << num << endl;
}
else
{
cout << "Invalid input!" << endl;
cin.clear(); // 清空输入缓冲区
cin.ignore(1024, '\n'); // 忽略一定数量的字符直到遇到回车符
return 1;
}
return 0;
}
这里使用 if (cin >> num++) 来检查输入是否正确。如果失败,输出 "Invalid input!",并清空输入缓冲区和忽略一定数量的字符直到遇到回车符。如果成功,输出输入的数值。
以上就是几种常用的检查方法。根据具体情况可以选择合适的方法。