在windows下使用codeblocks(编译器采用MinGW)时,有时会遇到“’to_string’ was not declared in this scope”的错误,这里不再对codeblocks、to_string等详细介绍,只介绍跟此问题相关的部分与解决办法。
首先,to_string是C++11引入的新功能,旧版本编译器可能不支持它,所以要给编译器加上“C++11”编译支持:工具栏打开Settings->Compiler
在这里勾选C++11标准即可。
当然你还要检查你的代码是否有问题。to_string包含在string中,而string包含在空间std中,所以你的代码应该包含头文件和相关空间引入,举个小例子:
#include <iostream>
#include <string> //std::string std::to_string
using namespace std;
int main()
{
int a = 123;
cout << "a = " << to_string(a) <<endl; // 如果不加命名空间可以在这里使用std::to_string
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
一般来说到这里大部分人的问题都能解决,但如果你的问题仍然没解决,那就来进行终极一步。事实上这是MinGW自身的一个bug,对C++中to_string等一系列函数不支持,解决方案就是下载新的相关头文件,这里包含了对这一系列函数的引入。具体步骤如下:
- 从这里下载替换的相关文件(CSDN博客不能直接插入附件,所以以资源的方式上传了,本来想设置0积分下载的,竟然最低2积分,积分不够的或者介意的可以在这里下载)
- 将下载的文件解压,会得到include文件夹和os_defines.h文件,还有我写的说明及使用步骤readme.txt。
将include文件夹下的wchar.h和stdio.h拷贝到MinGW的include文件夹中,一般是C:\mingw\include,如果你的codeblocks集成了MinGW则首先要从你的codeblocks安装目录中找到MinGW文件夹,拷贝到其下的include文件夹。
C:\mingw\include 或者 D:\Program Files\CodeBlocks\MinGW\include(记得找你自己的codeblocks安装目录)将os_defines.h拷贝到MinGW安装目录的如下目录:
C:\mingw\lib\gcc\mingw32\4.7.0\include\c++\mingw32\bits
当然如果codeblocks集成MinGW,你要拷贝到对应的MinGW目录下对应的文件夹。这里所有的拷贝操作都要选择替换。