C++ 需要输入验证的建议吗

C++ 需要输入验证的建议吗,c++,validation,C++,Validation,我已经完成了一个非常简单的课堂作业。然而,我是那种喜欢跳出框框思考的人 例如,用户_input1和用户_input2没有对其进行任何类型的验证。我可以键入searen,但它不会捕获错误的数据类型错误。我的问题是,对于初始用户输入,什么样的方法是进行输入验证的最佳方法 // This program uses a function template. #include <iostream> #include <iomanip> #include <s

我已经完成了一个非常简单的课堂作业。然而,我是那种喜欢跳出框框思考的人

例如,用户_input1和用户_input2没有对其进行任何类型的验证。我可以键入searen,但它不会捕获错误的数据类型错误。我的问题是,对于初始用户输入,什么样的方法是进行输入验证的最佳方法

// 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:当然,我知道。不管怎么说,他还没有真正完成那部分的编程。看到了吗