首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >cygwin g++ std::stoi“错误:‘stoi’不是‘std’的成员

cygwin g++ std::stoi“错误:‘stoi’不是‘std’的成员
EN

Stack Overflow用户
提问于 2013-11-22 20:56:38
回答 4查看 25.6K关注 0票数 18

我有:

windows 7/32位上的-cygwin 1.7.25

-g++ --版本--> g++ (GCC) 4.8.2

-libstdc++.a --> gcc-g++-4.8.2-1

尝试创建c++ Hello World:

代码语言:javascript
复制
#include <string>

int main() 
{
   std::string s = "123";
   int i = std::stoi(s);
}

编译提供以下功能:

代码语言:javascript
复制
$ 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);

我找了几个小时,但还是找不到解决办法。这里有什么问题?

EN

回答 4

Stack Overflow用户

发布于 2013-12-25 15:27:18

这是一个错误,可能是一些库代码不完整地移植到cygwin (这是一个cplusplus11特性)--毕竟有些东西必须改变。一定要上报。

当然,解决方案很简单:#include <cstdlib> strtol(s.c_str(),0,10);

www.cplusplus.com/.../strtol

here中也提到了一个类似的mingw bug

std::stoi doesn't exist in g++ 4.6.1 on MinGW

票数 12
EN

Stack Overflow用户

发布于 2016-03-03 13:14:00

昨天我也遇到了同样的问题。“错误:'stoi‘不是’std‘的成员。”

首先,我确保启用了c++11。然后,我将g++编译器更新到最新版本。在那之后,这个错误消失了。

票数 3
EN

Stack Overflow用户

发布于 2014-03-12 12:57:50

编译器没有被认真对待。在windows上,最好的办法是使用visual studio,因为它总是保持最新。这里的bug是宏定义从一开始就是错误的。问题从iomanip.h和iosbase开始。因此,他们必须更改所有这些代码。有用户为此制作的补丁,但我不会相信他们,因为他们可能包含比原始副本更多的错误。但这取决于你,我只是坚持使用visual studio速成版。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20145488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档