C 中的stol()函数中的错误处理
error handling in stol() function in c++
这是我使用的代码:
int cap(long n){
long sq = n*n;
string num = to_string(sq),s1,s2;
cout << num;
for(int i=1;i<=num.length();i++){
s1 = num.substr(0,i);
s2 = num.substr(i,num.length()-i);
string::size_type sz=0;
long n1 = stol (s1,&sz,0);
long n2 = stol (s2,&sz,0);
if(n1+n2==n){
return 1;
}
}
return 0;
}
这是我遇到的错误。此类错误的任何提示?
循环条件是错误的,您应该设置
for(int i=1;i<num.length();i++){
,该程序不会崩溃。不过,我无法要求结果是否是所需的结果。
当 i=num.length()
, s2
为
s2 = num.substr(i,num.length()-i);
与
相同s2 = num.substr(i, 0); //for i=num.length()
^~~~~length of substring is zero
然后,此空字符串以s2
的形式传递给stol
,因此导致错误" 终止",在抛出了'std :: invalid_argument'invalid_argument'" " " <</p>
long n2 = stol (s2, &sz, 0);
^~~~~Empty string.
demo
相关文章:
- 错误处理.将系统错误代码映射到泛型
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- posix_spawn():使用posix_scawn()时的错误处理问题
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 关于 istream 中的错误处理的问题
- 程序使用的 C 库中的错误处理C++
- C++ 错误检查 fstream open() 命令和一般字符串流错误处理
- 使用std::tie进行类似golang的错误处理,同时返回结果,是否有缺点?(C++11)
- Boost进程"系统"功能中的错误处理
- RPN计算器c++错误处理和多个运算符
- 提升精神 x3 错误处理程序与期望
- 构造函数中的错误处理而不会失败
- 当 C++ 中函数参数的输入类型(类)错误时的错误处理
- 关于 ocilib 错误处理的问题,如何使用 ocilib 正确捕获日志错误?
- 我可以使用 std::optional 进行错误处理吗?
- C++ main() 末尾关于错误处理的错误
- 抽象包装带有异常的 C 错误处理的最佳方法
- vwprintf错误处理(ERRNO显示0)
- C++ 使用枚举进行错误处理
- 在 C++ 中创建自己的错误处理机制