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

问题描述 投票:1回答:2

很可能这很奇怪,但是当我得到这个错误时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)
c++ c++11 compiler-errors codeblocks
2个回答
2
投票

好的,我发现它是与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,版本号正确)

-1
投票

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

stoi也在std命名空间中:

std::stoi() 

要么:

using namespace std;
© www.soinside.com 2019 - 2024. All rights reserved.