我读过这里,C++17是功能完整的,尽管规范还没有完全准备好。如何在代码中使用C++17特性,特别是在Eclipse (Neon)中?
具体来说,我想使用filesystem来轻松地遍历目录。
发布于 2017-05-18 13:25:07
在最近的版本中,libc++和libstdc++都有std::experimental::filesystem。我不知道直接使用std::filesystem;C++17还没有发布,这似乎是合理的。
boost有boost::filesystem,它有几种不同的地方,但结构几乎相同。使用boost::filesystem编写的代码可以相对容易地移植到std::filesystem。
作为不兼容性的一个例子,boost有一个单数标志枚举,而std有一个带有更多设置的复数标志enum位字段。
您可能必须将-std=c++1z传递给编译器,检查您的libc++或libstdc++版本,切换您正在使用的版本,安装新版本等,或者安装boost,并使用C++17s所基于的文件系统库。
发布于 2017-08-10 13:34:39
尽管std::filesystem计划随C++17一起运行,但是当前的编译器实现还没有提供“官方”C++17支持。正如牦牛在他的回答中已经指出的,最近的编译器和标准C++库版本都有std::experimental::filesystem。
至少对于GNU编译器g++,我可以说您甚至不需要设置C++17语言方言,使用C++14就足够了!但是,还需要链接(静态)库libstdc++fs.a。
此外,定义std::filesystem命名空间也非常方便,这样您就可以使用标头(几乎),就好像它们已经完成一样:
// ...
#include <experimental/filesystem>
namespace std {
namespace filesystem = std::experimental::filesystem;
}
// now use std::filesystem ...总结如下:
libstdc++fs.a<experimental/filesystem>https://stackoverflow.com/questions/44044404
复制相似问题