我有:
Windows 7 / 32bit上的-cygwin 1.7.25
-g ++ --version - > g ++(GCC)4.8.2
-libstdc ++。a - > GCC-克++ - 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);
我搜索了几个小时,但我仍然找不到解决方案。这有什么问题?
答案 0 :(得分:11)
这是一个错误,可能是cygwin的一些库代码的不完整端口(它是cplusplus11功能) - 毕竟有些东西必须改变。务必报告。
解决方案当然很简单:#include <cstdlib> strtol(s.c_str(),0,10);
还提到了类似的mingw错误here
答案 1 :(得分:3)
昨天我遇到同样的问题。 “错误:'stoi'不是'std'的成员。”
首先,我确保启用了c ++ 11。然后,我将g ++编译器更新到最新版本。之后,这个错误就消失了。
答案 2 :(得分:1)
编译器没有被认真对待。在Windows上,你最好的选择是使用visual studio,因为它总是保持最新。这里的错误是宏defs开始是错误的。问题从iomanip.h和iosbase开始。所以他们必须改变所有的代码。有用户制作的补丁,但我完全不相信它们,因为它们可能包含比原始副本更多的错误。但它取决于你,我只是坚持使用visual studio express edition。
答案 3 :(得分:0)
stoi对我来说只适用于mingw64。 如果您使用Codeblocks,请不要忘记检查您的项目编译器是否设置为mingw64。