gpt4 book ai didi

c++ - std::stoi 在 MinGW 上的 g++ 4.6.1 中不存在

转载 作者:IT老高 更新时间:2023-10-28 12:41:15 27 4
gpt4 key购买 nike

我尝试编译这个简单的程序 on IdeOne (使用 gcc 4.5.1)和我的 Linux 计算机(使用类似 4.6.4 的东西):

#include <string>
#include <iostream>

int main() {
std::cout << std::stoi("32") << std::endl;
}

它完美编译并输出32。但是,当我尝试在我的 Windows 计算机上使用 MinGW 和 gcc 4.6.1 编译它时,我收到了这个错误:

test.cpp: In function 'int main()':
test.cpp:5:19: error: 'stoi' is not a member of 'std'

std::stoul 等也会发生同样的情况。std::stoi 和家族是否由于某种原因在 MinGW 中不存在?我认为 MinGW (sh|w) 上的 gcc 与 Linux 上的行为相同。

最佳答案

这是 Windows 上 vswprintf 的非标准声明的结果。 GNU 标准库在此平台上定义了 _GLIBCXX_HAVE_BROKEN_VSWPRINTF,这反过来又禁用了您尝试使用的转换功能。您可以在此处阅读有关此问题和宏的更多信息:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37522 .

如果您愿意修改与 MinGW 一起分发的头文件,您可以通过删除 !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) 宏在 ..的第 2754 行来解决这个问题。 ./lib/gcc/mingw32/4.6.1/include/c++/bits/basic_string.h,并将其添加回第 2905 到 2965 行(引用 std::vswprintf)。您将无法使用 std::to_wstring 函数,但许多其他转换函数应该可用。

关于c++ - std::stoi 在 MinGW 上的 g++ 4.6.1 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com