Cygwin没有编译stod

时间:2014-10-25 11:36:34

标签: c++ c++11 cygwin

我正在尝试编译此example code

#include <iostream>   // std::cout
#include <string>     // std::string, std::stod

int main ()
{
  std::string orbits ("365.24 29.53");
  std::string::size_type sz;     // alias of size_t

  double earth = std::stod (orbits,&sz);
  double moon = std::stod (orbits.substr(sz));
  std::cout << "The moon completes " << (earth/moon) << " orbits per Earth year.\n";
  return 0;
}

尝试从命令提示符编译

C:\Users\DWane\Documents>g++ -std=c++0x testme.cpp -o out.exe
testme.cpp: In function 'int main()':
testme.cpp:9:18: error: 'stod' is not a member of 'std'
   double earth = std::stod (orbits,&sz);
                  ^
testme.cpp:10:17: error: 'stod' is not a member of 'std'
   double moon = std::stod (orbits.substr(sz));
                 ^

我正在运行Windows 8 64位并拥有g ++(GCC)4.8.3。

1 个答案:

答案 0 :(得分:2)

简短的回答是,它是Cygwin的GCC(或libstdc ++)端口中的一个错误。我可以在Cygwin邮件列表上找到的唯一消息来自Jan 29, 2014,它只是说:

  

你是否在mingw下尝试了同样问题的建议?它看起来   像这样可能是一个临时的解决方法,直到问题得到解决。   只需制作

     确定你试试吧   /lib/gcc/i686-pc-cygwin/4.8.2/include/c++/bits/basic_string.h if   你正在为Cygwin建造..

MinGW也知道字符串转换函数存在问题,尽管它与Cygwin不同。我的建议是下载Stephan T. Lavavej的64-bit MinGW distribution,它带有GCC 4.9.1和许多最新的软件包。