将巨大的用户输入减少到极限?(C++)
Reducing huge user input to limits? (C++)
我的C++程序中有一个函数,它从终端收集一个数字。
我希望它接受用户输入的任何数字,将带符号的long-long-int范围之外的数字减少到确切的限制,正确地通知用户任何减少,并成功返回。
所有非数字输入都应该被完全抛出,并无限地重新提示用户。
我以为过大的输入会自动减少到有符号的限制,但这个函数会将它们视为无效,并给我非数字的重新提示。我该怎么解决这个问题?
void get_input(long long int& input_value)
{
while(0==0) //infinite loop
{
cout << "Input whole number: ";
if(cin >> input_value)
{
cout << endl;
if (input_value >= LLONG_MAX)
{
cout << "Size limit exceeded. " << LLONG_MAX << " will be used instead.nn";
}
else if (input_value <= LLONG_MIN)
{
cout << "Size limit exceeded. " << LLONG_MIN << " will be used instead.nn";
}
cin.clear();
return;
}
else
{
cout << "Please input a numeral.nn"; //trash invalid input
string garbage;
cin.clear();
getline(cin,garbage);
}
}
}
我包括iostream、string和climits,并全局使用命名空间std.
您想要输入一个字符串并对其使用strtoll
。
相关文章:
- C++向量的极限
- QUdpSocket在高频环境中的极限
- 使用 c++ 查找收敛序列的极限
- 梯度幅度的单位和极限是什么
- 即使在C 中越过初始化阵列的极限后,结果也是如此
- C++17 用于初始化模板类的折叠表达式的极限类型
- OpenMP:即使在深度极限的情况下,递归任务也比顺序慢
- 获得变量极限的优雅方法
- 我能在C/C++中得到堆栈的极限吗
- C++中多重继承的极限
- 阿特金筛子在非常高的极限下出现故障
- 编码以查找 x^2 C++ 的极限
- 检查C++中stoi()函数的int极限
- Barnes Hut和递归极限
- 将巨大的用户输入减少到极限?(C++)
- 如何在没有if-else的情况下无限循环或循环到极限