使用-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
但得到了相同的错误.
我究竟做错了什么?
代码在这里:
#include<string>
using namespace std;
int main()
{
string body="456";
int i=stoi(body);
}
注意:
- 我也试过
-std=c++0x
和g ++。 - 与
to_string()
功能相同的问题。 - gcc版本4.9.2(tdm -1)
答案
好的,我发现它是与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;
以上是关于使用-std = c ++ 11后,'stoi'未在此范围内声明的主要内容,如果未能解决你的问题,请参考以下文章
'-std = c ++ 11'对C ++ / ObjC ++有效,但对C无效
用于 std::reverse() 的 C++11 便利包装器