首页 > 解决方案 > 从键盘读取整数的 C++ 函数

问题描述

我正在尝试用 C++ 编写一个函数leggiInteroEstrInclminimomassimo

以下是我编写的函数,然后是 , 中的一个语句main()来调用它:

#include <iostream>

using namespace std;

int leggiInteroEstrIncl(string stringaDaStampare, int minimo, int massimo) {

  int numInserito = 0;
  bool errore = false;

  do {
    errore = false;
    cout << stringaDaStampare << " (un numero intero compreso tra " << minimo
         << " e " << massimo << " estremi inclusi): ";

    try {
      cin >> numInserito;
    } catch (...) {
      errore = true;
      cout << "Hai inserito un numero non valido, prova ancora" << endl;
    }

    if (errore == false && (numInserito < minimo || numInserito > massimo)) {
      errore = true;
      cout << "Hai inserito un numero al di fuori dell'intervallo richiesto: "
           << minimo << " <-> " << massimo << endl;
    }

  } while (errore);

  return numInserito;
}

int main() {
  int number = 0;

  number = leggiInteroEstrIncl(
      "Inserire la cifra in Yen da ripartire in banconote e monete", 1, 30000);

  system("pause");
  return 0;
}

如果我输入了一个不包含在指定范围内的有效整数,这个软件会工作并要求用户再次输入,但如果我输入不是数字的东西,例如单词“hello”,这个软件进入一种循环,并不停地要求用户再次输入。

你能告诉我它有什么问题吗?

谢谢

标签: c++

解决方案


您可以使用std::string获取输入:

string insertio;
cin >> inserito;

然后使用此功能之一:

http://en.cppreference.com/w/cpp/string/basic_string/stol

如果字符串中没有数字,则会引发适当的异常。

如果您需要检查更多解决方案,请检查以下解决方案:

如何确定字符串是否为 C++ 中的数字?


推荐阅读