c++ - 如果用户输入多个整数,如何抛出错误

标签 c++ validation input error-handling c++17

这是我的代码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

long int iterFunc(int);
long int recurFunc(int);


int main() {
  int n;

   while(true){
      try{
         cout << "Enter: ";
         if (!(cin >> n))
            throw("Type Error");
         if (n < 0)
            throw n;
         else 
            if (n == 0)
             break;
            cout << "Iterative: " << iterFunc(n) << endl;
            cout << "Recursive: " << recurFunc(n) << endl;
      }
      catch(int n){
         cout << "Error. Enter positive number." << endl;
      }
      catch(...){
         cin.clear();
         cin.ignore(100, '\n');
         cout << "Error. Please enter a number" << endl;
      }
   }
   cout << "Goodbye!";
   return 0;
}

long int iterFunc(int n){
  vector<long int> yVec = {1, 1, 1, 3, 5};
  if (n <= 5)
    return yVec[n - 1];
  else
    for(int i = 5;i < n; i++){
      long int result = yVec[i - 1] + 3 * yVec[i- 5];
      yVec.push_back(result);
    }
    return yVec.back();
}

long int recurFunc(int n){
  switch (n) { 
    case 1:  
    case 2:  
    case 3:  
      return 1; 
      break;
    case 4:
      return 3;
      break;
    case 5:
      return 5; 
      break;
    default:  
      return recurFunc(n - 1) + 3 * recurFunc(n - 5); 
      break;   
  } 
}`
程序应仅接受一个整数,并使用迭代和递归实现返回函数的y。例如:30、59、433。如果用户输入的整数大于1(以空格分隔),如何显示错误消息?例如:“3 45 32”。
我尝试使用if (cin.getline == ' ') throw("Error name"),但程序仍执行并在输入中返回数字的函数y

最佳答案

像这样的作品:

int main()
{
  std::string str;
  std::cout << "? : ";
  std::getline(std::cin, str);
  std::string::size_type pos(0);
  int i = std::stoi(str, &pos);
  if (pos != str.length())
    return 1;
}

关于c++ - 如果用户输入多个整数,如何抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63746130/

相关文章:

c++ - 如何使 'string line' 与 'getline(in,line)' 循环中的 'while(getline(...))' 在同一范围内?

c++ - 从二维数组到一维数组的转换

PHP 在不使用第 3 方代码的情况下同时使用客户端和服务器端验证

javascript - 使用 Javascript/Jquery 将文本字段转换为数组并显示在页面上

input - 如何在 Linux 上制作具有实时输入的简单终端游戏?

c++ - 为什么这个const char* 实际修改后不能修改呢?

c++ - 我怎样才能完成每个编译程序/动态库的对象的单个实例?

php - 检查用户名和电子邮件是否已存在于数据库中

validation - 与服务器端验证相比,为什么客户端验证存在安全风险?

Java 输入不工作(初学者)