我正在上第二节 OOP 课,第一节课是用 C# 教授的,所以我是 C++ 新手,目前我正在使用 cin 练习输入验证。所以这是我的问题:
我构建的这个循环是验证输入的好方法吗?或者有更常见/接受的方法吗?
Thanks!
Code:
int taxableIncome;
int error;
// input validation loop
do
{
error = 0;
cout << "Please enter in your taxable income: ";
cin >> taxableIncome;
if (cin.fail())
{
cout << "Please enter a valid integer" << endl;
error = 1;
cin.clear();
cin.ignore(80, '\n');
}
}while(error == 1);
我不太热衷于打开 iostream 异常。 I/O 错误还不够特殊,因为错误通常很有可能发生。我更喜欢只在不太常见的错误情况下使用异常。
代码还不错,但是跳过 80 个字符有点随意,如果您摆弄循环,则错误变量不是必需的(并且应该是bool
如果你保留它)。你可以把读自cin
直接进入一个if
,这可能更像是 Perl 习惯用法。
这是我的看法:
int taxableIncome;
for (;;) {
cout << "Please enter in your taxable income: ";
if (cin >> taxableIncome) {
break;
} else {
cout << "Please enter a valid integer" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
除了只跳过 80 个字符之外,这些都只是小问题,更多的是偏好风格的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)