目录
背景
C++17引入了文件系统类filesystem,似乎也是从boost里搞出来的,这个东西操作文件(夹)挺方便的,记录一下
1.filesystem使用过程中遇到的错误
如果你用的GCC版本<GCC8.0,则直接#include<filesystem>会报错,说找不到文件
No such file or directory
对于这种情况,可以如下操作。如果是GCC8.0+ 和C++17以上,则只需要#include<filesystem>
①改include路径
#include<experimental/filesystem>
using fs=std::experimental::filesystem;
②找到filesystem的库
$ locate libstdc++fs.a
/usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a
其中,/usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a是我系统里的位置
③将库的位置添加到CMakeLists.txt的库链接部分
target_link_libraries(${PROJECT_NAME} /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a)
理论上,直接把库拿出来,放在项目里,链接项目的lib,应该也可行,未尝试。
2.filesystem的使用
参考资料:c++ filesystem 用法
参考资料讲得挺好,我主要用来检查文件夹是否存在,以及创建文件夹,很方便。