C++类型转换错误/
C++ Type conversion error /
我需要一个函数来检查输入值是否适合变量(unsigned long-long)。如果没有,程序应该要求用户再次输入值(直到输入有效值)。我试过了:
unsigned long long CheckInput()
{
string input_st;
cin>>input_st;
for (int i = 0; i < input_st.length(); i++){
if (input_st[i] >= '0' && input_st[i] <= '9');
else { cout << "Error. Please try again ";
CheckInput();
}
}
return stoull(input_st);
}
它不起作用。问题似乎出在stoull函数中,但我该如何纠正?编译器在运行时显示错误消息"std::invalid_argument at memory location 0x0051F520"。
此外,在您的代码中,您只是在检查字符串是否只有数字。您还应该检查这个数字是否适合无符号长-长。(2至电源64)在这里,您可以找到C++中不同类型的最大值/最小值。
如果您检查文档中的stoull()
,您会发现如果传递的字符串无法转换为unsigned long long
,它会抛出一个std::invalid_argument
。
所示代码中的input_st
始终是一个空字符串,无法转换为整数值,因此引发异常。
显示错误消息的不是编译器。报告的错误消息是运行时错误,由抛出的异常引起。
与您的问题无关,如果input_st
是一个不包含数字的非空字符串,则函数将递归地调用自己。这是无效的逻辑。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- C++:用户定义的显式类型转换函数错误
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 指向类成员函数的指针中存在类型转换错误
- 错误 c++ 在令牌之前'('预期的构造函数、析构函数或类型转换
- 错误:在“(”标记之前进行预期的构造函数、析构函数或类型转换.即使我有一个构造函数
- Mat的convertTo函数在OpenCV中将灰度图像的类型转换为CV_32F时抱怨断言错误
- 获取错误:在“(”标记之前进行预期的构造函数、析构函数或类型转换
- Vulkan API 调试函数指针类型转换错误
- 模板扣除 /类型转换错误
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 错误:令牌之前的预期构造函数、析构函数或类型转换'*'
- 尝试生成C++ .DLL的视觉对象类型/转换错误
- 在 CUDA 中使用内部类型转换的奇怪错误
- 需要构造函数/析构函数/类型转换错误
- C++模板错误:'<'令牌之前的预期构造函数、析构函数或类型转换
- 迭代器错误从非标量类型转换为非标量类型
- C++类型转换错误
- 为什么数据类型转换错误只出现在C++中而不出现在C中
- 无法将类型转换为类型*-C++编译错误