在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目录下对应的文件夹。

  • 这里所有的拷贝操作都要选择替换

参考链接:
to_string is not a member of std, says g++ (mingw)