我想将我的C ++ 11程序移植到Windows,但似乎在mingw 4.7.1中没有实现stoi和std :: to_string。我知道它已被问及有一个解决方案来编辑一些标题,但在我的mingw版本(4.7.1附带codelite)标题是不同的,没有我必须移动的确切行(可能是因为答案是对于mingw 4.6)。
所以我的问题是如何在mingw 4.7上获得这些功能? 是否有任何指南在4.7中的标题中有什么变化,或者它可能会包含在4.8中?
当然有boost :: lexical_cast,但我想保持我的代码不变,所以我正在寻找解决方案如何在mingw中启用这些功能。
也许有一些自定义mingw发行版支持这些功能?
答案 0 :(得分:6)
Mingw使用Windows API,Windows不提供用于实现vswprintf
的{{1}}函数的符合版本,归咎于Microsoft。
如果您使用(非常)最新版本的mingw-w64分支和未发布的4.8版本的GCC,那么它将起作用,但是你对主mingw32和GCC 4.7.1运气不好
如果您愿意修补您的实施,可以尝试http://tehsausage.com/mingw-to-string给出的解决方案,但请仔细阅读警告。
更新:
似乎只有to_string
受到std::to_wstring
功能损坏的影响,所以我对GCC 4.9.3(及更高版本)进行了更改,这将定义vswprintf
, MinGW的std::stoi
,std::stod
等等,只留下std::to_string
未定义。
如果您想自己编辑4.7.1标题,请参阅相关补丁:
to_wstring