最有可能这很奇怪,但是当我收到 stoi未在此范围内声明的错误时,我笑了,因为我熟悉这个错误及其解决方法
我检查了这个选项 让g ++遵循C ++ 11 ISO c ++语言标准[-std = c ++ 11] 在代码块的编译器设置中(16.01) ,与MinGW)并尝试重新编译它,但令人惊讶的是它没有工作,同样的错误仍然存在。我尝试重新安装CodeBlocks但是没有用。
另外,我尝试使用{power {1}}的Windows power shell和命令提示符,但也出现了同样的错误。
我做错了什么?
代码在这里:
g++ math_handler.cpp -std=c++11
注意:
#include<string>
using namespace std;
int main()
{
string body="456";
int i=stoi(body);
}
和g ++。-std=c++0x
功能相同的问题。答案 0 :(得分:2)
好的,我发现它是与CodeBlocks捆绑在一起的MinGW中的已知错误。我找到了解决方案here。
下载包含三个修补程序的mingw-to-string-gcc47.zip 头文件。 (原始补丁:wchar.h,stdio.h,os_defines.h)
从zip文件的include目录中复制 wchar.h 和 stdio.h 到以下目录(覆盖): C:\ mingw \ include (替换 C:\ mingw \与相应的目录)
- 醇>
将 os_defines.h 复制到以下目录(覆盖): C:\ mingw \ lib \ gcc \ mingw32 \ 4.7.0 \ include \ c ++ \ mingw32 \ bits (替换 C:\ mingw \与相应的目录)(用4.7替换4.7.0 正确的版本号)
答案 1 :(得分:-1)
您是否包含了必需的头文件?
#include <string>
stoi也在std命名空间中:
std::stoi()
或:
using namespace std;