首页  >  文章  >  后端开发  >  为什么 std::stoi 无法在 Windows 上与 MinGW 4.6.1 配合使用?

为什么 std::stoi 无法在 Windows 上与 MinGW 4.6.1 配合使用?

Barbara Streisand
Barbara Streisand原创
2024-10-30 09:29:27624浏览

Why is std::stoi not working with MinGW 4.6.1 on Windows?

MinGW 4.6.1 中 std::stoi 编译错误

尝试在 MinGW 4.6 中使用 std::stoi 编译程序时.1 中,可能会出现一条错误消息,指示“stoi”不是“std”的成员。此问题源于 Windows 上 vswprintf 的非标准声明。

问题原因

GNU 标准库在 Windows 上定义了宏 _GLIBCXX_HAVE_BROKEN_VSWPRINTF,该宏会禁用转换函数,包括 std::stoi。在 Windows 上使用 MinGW 时,由于该平台上的 vswprintf 存在问题,会启用此宏。

解决问题

要解决此问题,请考虑以下解决方法:

  1. 修改 MinGW 头文件(不推荐):

    • 删除 .. 第 2754 行的 !define(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) 宏./lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h.
    • 将宏添加回第 2905 至 2965 行,引用 std::vswprintf。

    此修改将禁用 std::to_wstring 函数,但其​​他转换函数应该可用。

其他信息

  • 有关该问题的更多详细信息,请参阅 GNU Bugzilla 报告:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37522。
  • 此解决方法可能并不适合所有人用户应谨慎实施。

以上是为什么 std::stoi 无法在 Windows 上与 MinGW 4.6.1 配合使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn