MinGW 中的 std::stoi 错误:依赖困境
无法在 MinGW 中使用 std::stoi 进行编译?找出令人惊讶的原因和潜在的解决方法。
问题:
尝试在带有 gcc 4.6.1 的 MinGW 中使用 std::stoi 等函数会触发错误,特别是“错误:“stoi”不是“std”的成员”。这些函数存在于更新版本的 GNU 标准库 (GSL) 中,但为什么 MinGW 中没有?
答案:
罪魁祸首是非标准声明在Windows中。 GSL 在此平台上定义了 _GLIBCXX_HAVE_BROKEN_VSWPRINTF,这会禁用 std::stoi 等转换函数。
解决方法:
可能的解决方案是修改 GSL 头文件。从 .../lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h 的第 2754 行删除 !define(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) 宏。此外,将宏添加回第 2905 至 2965 行,该宏引用 std::vswprintf。
含义:
此解决方法禁用 std::to_wstring 函数,但允许使用其他转换函数。请注意,这是非标准修改,可能会产生不可预见的后果。
以上是为什么 MinGW 中缺少 `std::stoi`?看看根本问题和可能的解决方案。的详细内容。更多信息请关注PHP中文网其他相关文章!