9

这是我正在尝试编译的代码,从某个地方的另一个论坛获得。

// 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 编译器和 code::Blocks 12.11

4

3 回答 3

2

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

你可以从这里得到一个,尽管 Code::Blocks 应该附带一个TDM GCC工具链,如果它是最新的应该可以工作(因为在撰写本文时它是 GCC 4.8.1)。

于 2013-11-10T19:19:03.393 回答
1

我也在 codeblocks-13.12mingw-setup-TDM-GCC-481.exe(2013 年 12 月 27 日构建)中遇到此错误。tdmgcc4.8.1 似乎是一个错误。也许最新的 tdmgcc 会修复它。 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 中使用它。

于 2014-03-15T16:30:35.553 回答
0

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

double piValue = 3.1415;
char piBuffer[8];
sprintf(piBuffer, "%f", piValue);
string pi(piBuffer);
于 2017-04-13T10:23:37.337 回答