这是我正在尝试编译的代码,从某个地方的其他论坛获取。
// 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
答案 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);