std::stoi 会导致段错误
std::stoi results in segfault
我有以下测试程序:
#include <string>
int main(int argc, char* argv[]) {
try {
return std::stoi("3000127232");
}
catch (...) {
return 0;
}
}
当我使用 C++11 在 ubuntu 上编译它并运行代码时,我得到的返回值为 0。这是我所期望的,因为字符串中的值超出了范围。
但是当我为 rasperry-buildroot 18.11 编译它时,我可以在 rasperry 上运行该程序,但我遇到了一个段错误。这是我没想到的。
是否有另一种解决方案可以将字符串转换为整数(超出范围时没有段错误(,或者有人有其他想法吗?
指定
std::stoi
在值超出范围时引发异常。如果实现未能做到这一点,那么它就不符合标准。这可能是编译器错误。
如果您的目标是不支持异常的系统,或者由于某些其他原因不符合标准,则还有其他方法可以将字符串转换为不使用异常的整数,例如 std::strtol
。
你可能想检查覆盆子上的 int 大小,它可能超出了范围。
相关文章:
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 如何摆脱C ++中的分段错误错误?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 如何解决分段错误错误C++
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 卷曲给出分段错误错误
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- 错误错误 C2872:"布尔值":kinect.h 的不明确符号
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 结构的分割错误错误
- 为什么此代码返回分段错误错误?
- 错误错误:无法编译内置功能
- 分段错误错误C++
- C++ 1Z 错误:错误:演绎指南中声明中的显式限定
- 使用对数据类型的向量的哈希表中的分段错误错误
- 为什么此代码会导致分段错误错误
- JNA结构字段值错误
- C++段故障错误