使用-std = c ++ 11后,'stoi'未在此范围内声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用-std = c ++ 11后,'stoi'未在此范围内声明相关的知识,希望对你有一定的参考价值。

很可能这很奇怪,但是当我得到这个错误时stoi没有在这个范围内宣布时,我笑了,因为我熟悉这个错误并且它是解决方案。

我检查了这个选项,g ++遵循c ++ 11 ISO c ++语言标准[-std = c ++ 11]在Code Blocks(16.01,MinGW)的编译器设置中并尝试重新编译它,但令人惊讶的是它没有用,同样的错误仍然存​​在。我尝试重新安装CodeBlocks但是没有用。

另外,我尝试使用windows power shell和命令提示符与g++ math_handler.cpp -std=c++11但得到了相同的错误.enter image description here

我究竟做错了什么?

代码在这里:

#include<string>

using namespace std;

int main()
{
    string body="456";
    int i=stoi(body);
}

注意:

  1. 我也试过-std=c++0x和g ++。
  2. to_string()功能相同的问题。
  3. gcc版本4.9.2(tdm -1)
答案

好的,我发现它是与CodeBlocks捆绑在一起的MinGW中的已知错误。我找到了解决方案here

  1. 下载mingw-to-string-gcc47.zip,其中包含三个修补的头文件。 (原始补丁:wchar.hstdio.hos_defines.h
  2. 将wchar.h和stdio.h从zip文件中的include目录复制到以下目录(overwrite):C: mingw include(用适当的目录替换C: mingw )
  3. 将os_defines.h复制到以下目录(overwrite):C: mingw lib gcc mingw32 4.7.0 include c ++ mingw32 bits(将C: mingw 替换为相应的目录)(替换4.7。 0,版本号正确)
另一答案

您是否包含所需的头文件? #include <string>

stoi也在std命名空间中:

std::stoi() 

要么:

using namespace std;

以上是关于使用-std = c ++ 11后,'stoi'未在此范围内声明的主要内容,如果未能解决你的问题,请参考以下文章

'-std = c ++ 11'对C ++ / ObjC ++有效,但对C无效

用于 std::reverse() 的 C++11 便利包装器

[C++11 多线程同步] --- 条件变量

[C++11 多线程同步] --- 条件变量

C++11 中 std::threads 向量的问题计算字母和单词的二元组

C++ STL应用与实现22: 函数组合之1:如何使用std::bind (since C++11)