很可能这很奇怪,但是当我得到这个错误时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
但得到了相同的错误.
我究竟做错了什么?
代码在这里:
#include<string>
using namespace std;
int main()
{
string body="456";
int i=stoi(body);
}
注意:
-std=c++0x
和g ++。to_string()
功能相同的问题。好的,我发现它是与CodeBlocks捆绑在一起的MinGW中的已知错误。我找到了解决方案here。
- 下载mingw-to-string-gcc47.zip,其中包含三个修补的头文件。 (原始补丁:wchar.h,stdio.h,os_defines.h)
- 将wchar.h和stdio.h从zip文件中的include目录复制到以下目录(overwrite):C:\ mingw \ include(用适当的目录替换C:\ mingw \)
- 将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;