首先确保编译器支持C++17并启用-std=c++17选项,然后包含<filesystem>头文件并使用std::filesystem命名空间,接着可通过fs::exists等函数执行路径检查、文件创建、遍历目录等操作。

要在C++中使用C++17的filesystem库,需要确保编译器支持C++17标准,并正确包含头文件和链接必要的库。以下是具体使用方法。
启用C++17标准
编译代码时必须开启C++17支持,否则无法使用std::filesystem。
-std=c++17编译选项:g++ -std=c++17 your_file.cpp -o your_program
-std=c++17:clang++ -std=c++17 your_file.cpp -o your_program
立即学习“C++免费学习笔记(深入)”;
- 在Windows上使用MSVC(Visual Studio 2017及以上),默认支持C++17,需设置语言标准为C++17。包含头文件并使用命名空间
filesystem库定义在<filesystem>头文件中,通常使用std::filesystem命名空间。
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
通过别名fs简化后续调用。
常用操作示例
以下是一些常见的文件系统操作:
检查路径是否存在
if (fs::exists("/path/to/file")) {<br>
std::cout << "路径存在
";<br>
}
判断是否为目录
if (fs::is_directory("/path/to/dir")) {<br>
std::cout << "这是一个目录
";<br>
}
创建目录
if (fs::create_directory("/path/to/new_dir")) {<br>
std::cout << "目录创建成功
";<br>
}
遍历目录中的文件
for (const auto& entry : fs::directory_iterator("/path/to/dir")) {<br>
std::cout << entry.path() << "
";<br>
}
获取文件大小
std::cout
重命名或移动文件
fs::rename("old_name.txt", "new_name.txt");
注意跨平台兼容性
std::filesystem支持Windows、Linux和macOS,但路径分隔符建议使用/或fs::path自动处理。
例如:
fs::path p = "/home/user/Documents"; // Linux<br> fs::path p = "C:\Users\User\Documents"; // Windows<br> // 或使用统一写法<br> fs::path p = "C:/Users/User/Documents";
基本上就这些。只要编译器支持C++17,并正确开启标准,filesystem库就能方便地进行文件和目录操作。不复杂但容易忽略的是链接问题——某些旧版g++可能需要手动链接stdc++fs:
g++ -std=c++17 your_file.cpp -lstdc++fs -o your_program











