c ++ 11 to_string使用代码:: blocks -std = c ++ 11标志已被选中

时间:2013-11-10 19:12:35

标签: c++ gcc c++11 stl

这是我正在尝试编译的代码,从某个地方的其他论坛获取。

// to_string example

#include <iostream>   // std::cout

#include <string>     // std::string, std::to_string


int main ()

{

  std::string pi = "pi is " + std::to_string(3.1415926);

  std::string perfect = std::to_string(1+2+4+7+14) + " is a perfect number";

  std::cout << pi << '\n';

  std::cout << perfect << '\n';

  return 0;

}

我收到错误: 'to_string'不是'std'

的成员

我已经在其他论坛中阅读过选择标记“让g ++遵循c ++ 11 ISO语言标准[-std = c ++ 11]”并且我拥有它仍然无效。

非常感谢任何帮助

我正在使用GNU GCC编译器 和代码:: Blocks 12.11

3 个答案:

答案 0 :(得分:2)

MinGW-w64增加了对自GCC 4.8以来必要功能的支持,因此请确保至少使用MinGW-w64版本的4.8 GCC。

你可以从here获得一个,虽然Code :: Blocks应该附带TDM GCC工具链,如果它是最新的(因为它是GCC 4.8,它应该有效)。在撰写本文时1)。

答案 1 :(得分:1)

我也在codeblocks-13.12mingw-setup-TDM-GCC-481.exe(建于2013年12月27日)中遇到此错误。 这似乎是tdmgcc4.8.1的一个错误。也许是最新的tdmgcc whill修复它。 https://stackoverflow.com/questions/21626866/c-elipse-cdt-getting-to-string-was-not-declared-in-this-scope-with-tdm-gcc-6 以上列表的原因应与我们的相同。

============================== std :: to_string函数由!defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)保护。 MinGW在os_defines.h中将此符号定义为1,因此您知道,我们不能在mingw中使用它。

答案 2 :(得分:0)

处理此错误的最简单方法是:

double piValue = 3.1415;
char piBuffer[8];
sprintf(piBuffer, "%f", piValue);
string pi(piBuffer);