cygwin g++ std::stoi“错误:‘stoi’不是‘std’的成员
Posted
技术标签:
【中文标题】cygwin g++ std::stoi“错误:‘stoi’不是‘std’的成员【英文标题】:cygwin g++ std::stoi "error: ‘stoi’ is not a member of ‘std 【发布时间】:2013-11-22 12:56:37 【问题描述】:我有:
-cygwin 1.7.25 on windows 7/32bit
-g++ --version --> g++ (GCC) 4.8.2
-libstdc++.a --> gcc-g++-4.8.2-1
试图制作一个c++ 你好世界:
#include <string>
int main()
std::string s = "123";
int i = std::stoi(s);
编译给出:
$ g++ -std=c++11 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:6:10: error: ‘stoi’ is not a member of ‘std’
int i = std::stoi(s);
我搜索了几个小时,但仍然找不到解决方案。这里有什么问题?
【问题讨论】:
很奇怪。它应该可以工作...这似乎是一些奇怪的错误。 【参考方案1】:这是一个错误,可能是某些库代码到 cygwin 的不完整端口(它是 cplusplus11 的一个功能)——毕竟有些东西必须更改。请务必举报。
解决方案当然很简单:#include <cstdlib> strtol(s.c_str(),0,10);
www.cplusplus.com/.../strtol
here也提到了一个类似的 mingw 错误
std::stoi doesn't exist in g++ 4.6.1 on MinGW
【讨论】:
最新稳定版的 Cygwin 也有这个问题,但使用 to_string cygwin v4.9.2 Windows 7/64 仍然没有 stoi,但 strtol 可以完成这项工作【参考方案2】:我昨天也遇到了同样的问题。 “错误:'stoi' 不是 'std' 的成员。”
首先,我确保启用了 c++11。然后,我将 g++ 编译器更新到最新版本。之后,这个错误就消失了。
【讨论】:
经过测试并在 Debian 上与 G++ 4.9 一起使用。虽然用户需要一个 Windows 解决方案【参考方案3】:编译器没有被认真对待。在 Windows 上,您最好的选择可能是使用 Visual Studio,因为它始终保持最新。这里的错误是宏定义开始时是错误的。问题从 iomanip.h 和 iosbase 开始。所以他们必须改变所有的代码。有用户为此制作的补丁,但我根本不相信它们,因为它们可能包含比原始副本更多的错误。但这取决于你,我只是坚持使用 Visual Studio Express Edition。
【讨论】:
【参考方案4】:stoi 仅在 mingw64 上对我有效。 如果您使用 Codeblocks,请不要忘记检查您的项目编译器是否设置为 mingw64。
【讨论】:
以上是关于cygwin g++ std::stoi“错误:‘stoi’不是‘std’的成员的主要内容,如果未能解决你的问题,请参考以下文章