c++ - 从键盘读取整数的 C++ 函数
问题描述
我正在尝试用 C++ 编写一个函数leggiInteroEstrIncl
(minimo
massimo
以下是我编写的函数,然后是 , 中的一个语句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”,这个软件进入一种循环,并不停地要求用户再次输入。
你能告诉我它有什么问题吗?
谢谢
解决方案
您可以使用std::string
获取输入:
string insertio;
cin >> inserito;
然后使用此功能之一:
http://en.cppreference.com/w/cpp/string/basic_string/stol
如果字符串中没有数字,则会引发适当的异常。
如果您需要检查更多解决方案,请检查以下解决方案:
推荐阅读
- reactjs - 如何捕获 SCRIPT1010:react.js 中的预期标识符错误?
- laravel - 多态 - 创建插入记录并跟进空白记录
- python - xmlrunner 使用 unittest 复制子测试的打印语句
- php - 更新到 PHP 7.3 后数组输出失败
- valgrind - 无法在 yocto 中为 armv7 构建 valgrind
- reactjs - store.dispatch 无法读取未定义的属性“then”
- wpf - WPF 下划线绑定 (MVVM)
- delphi-2010 - 有没有办法设置可以在 Delphi 的编辑中插入的最小字符数?
- bash - 如何在大日志文件中按分钟计算?
- firebase - firestore ordertBy() queries make app can't take data in first request