C++ 需要输入验证的建议吗
我已经完成了一个非常简单的课堂作业。然而,我是那种喜欢跳出框框思考的人 例如,用户_input1和用户_input2没有对其进行任何类型的验证。我可以键入searen,但它不会捕获错误的数据类型错误。我的问题是,对于初始用户输入,什么样的方法是进行输入验证的最佳方法C++ 需要输入验证的建议吗,c++,validation,C++,Validation,我已经完成了一个非常简单的课堂作业。然而,我是那种喜欢跳出框框思考的人 例如,用户_input1和用户_input2没有对其进行任何类型的验证。我可以键入searen,但它不会捕获错误的数据类型错误。我的问题是,对于初始用户输入,什么样的方法是进行输入验证的最佳方法 // This program uses a function template. #include <iostream> #include <iomanip> #include <s
// This program uses a function template.
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// Template definition for square function.
template <class T>
T maximum (T number1 , T number2)
{
if ( number1 > number2)
return number1;
else
return number2;
}
template <class S>
S minimum (S number1 , S number2)
{
if ( number1 > number2)
return number2;
else
return number1;
}
int main()
{
double user_input1 = 0; // To hold integer input
double user_input2 = 0;
int menu_choice = 0;
cout << " Please Enter The First Number To Be Evaluated ";
cin >> user_input1;
cout << " Please Enter The Second Number To Be Evaluated ";
cin >> user_input2;
system ("cls");
cout << " Your Entry Was As Followed 1: " << user_input1 << " 2: " <<user_input2;
cout << "\n 1. This Option Will Show You The Greater Argument ";
cout << "\n 2. This Will Show You The Lesser Argument ";
cout << "\n Your Menu Choice Is ";
cin >> menu_choice;
switch ( menu_choice )
{
case 1:
cout << maximum (user_input1 , user_input2);
break;
case 2:
cout << minimum (user_input1 , user_input2);
break;
defualt :
" INVALID ENTRY ";
}
system ("pause");
return 0;
}
您可以解析用户的输入并检查其正确性 当您将十一月输入到用户_input1中时,您可能会通过该数组第一个元素的整数地址来初始化该数字。请在此处更正我。然后它将从int隐式转换为double 实现bool is_numberstd::string const&input函数,在代码中只验证用户输入中的数字。例如,您可以通过以下方式执行此操作:
#include <assert.h>
#include <iostream>
// ... //
int main() {
string input;
cout << " Please Enter The First Number To Be Evaluated ";
cin >> input;
assert(is_number(input));
double user_input1 = stod(input);
cout << " Please Enter The Second Number To Be Evaluated ";
cin >> input;
assert(is_number(input));
double user_input2 = stod(input);
// ... //
}
通常,assert用于调试目的。
当用户输入不正确时,您可以使用if-else语句,并编写错误消息。我写上面的例子是因为它很短。对于初学者,你应该验证你的输入是否成功:if std::cin>>user\u inputs1;反驳:?标准错误,请更正。@重复数据消除程序:为什么您认为switch语句中不能有标签?这可能不是我们想要的,但根据语言规范,它肯定是可以的。@DietmarKühl:当然,我知道。不管怎么说,他还没有真正完成那部分的编程。看到了吗