我有:
windows 7/32位上的-cygwin 1.7.25
-g++ --版本--> g++ (GCC) 4.8.2
-libstdc++.a --> gcc-g++-4.8.2-1
尝试创建c++ Hello World:
#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);
我找了几个小时,但还是找不到解决办法。这里有什么问题?
发布于 2013-12-25 15:27:18
这是一个错误,可能是一些库代码不完整地移植到cygwin (这是一个cplusplus11特性)--毕竟有些东西必须改变。一定要上报。
当然,解决方案很简单:#include <cstdlib> strtol(s.c_str(),0,10);
here中也提到了一个类似的mingw bug
发布于 2016-03-03 13:14:00
昨天我也遇到了同样的问题。“错误:'stoi‘不是’std‘的成员。”
首先,我确保启用了c++11。然后,我将g++编译器更新到最新版本。在那之后,这个错误消失了。
发布于 2014-03-12 12:57:50
编译器没有被认真对待。在windows上,最好的办法是使用visual studio,因为它总是保持最新。这里的bug是宏定义从一开始就是错误的。问题从iomanip.h和iosbase开始。因此,他们必须更改所有这些代码。有用户为此制作的补丁,但我不会相信他们,因为他们可能包含比原始副本更多的错误。但这取决于你,我只是坚持使用visual studio速成版。
https://stackoverflow.com/questions/20145488
复制相似问题