cygwin g ++ std :: stoi“错误:'stoi'不是'std。的成员

时间:2013-11-22 12:56:38

标签: c++11 g++ cygwin

我有:

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);

我搜索了几个小时,但我仍然找不到解决方案。这有什么问题?

4 个答案:

答案 0 :(得分:11)

这是一个错误,可能是cygwin的一些库代码的不完整端口(它是cplusplus11功能) - 毕竟有些东西必须改变。务必报告。

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

www.cplusplus.com/.../strtol

还提到了类似的mingw错误here

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

答案 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。