C++ filesystem
时间: 2024-01-14 16:02:04 浏览: 153
C++17引入了新的标准库文件系统头文件<filesystem>,它提供了一组用于管理计算机上文件和目录的类和函数。这个头文件中提供的类和函数可以让你轻松地创建、删除、移动、重命名和遍历文件和目录。
下面是一些常用的<filesystem>库函数和类:
- `std::filesystem::path`: 用于处理文件路径的类。
- `std::filesystem::directory_iterator`: 用于遍历目录的迭代器类。
- `std::filesystem::create_directory()`: 创建一个新目录。
- `std::filesystem::remove()`: 删除一个文件或目录。
- `std::filesystem::rename()`: 重命名一个文件或目录。
- `std::filesystem::copy()`: 复制一个文件或目录。
- `std::filesystem::exists()`: 检查文件或目录是否存在。
- `std::filesystem::is_directory()`: 检查给定路径是否是目录。
- `std::filesystem::is_regular_file()`: 检查给定路径是否是普通文件。
使用<filesystem>库可以方便地在C++程序中进行文件和目录操作,大大简化了与文件系统交互的过程。
相关问题
c++ filesystem 删除文件
在C++中,如果你想要删除一个文件,可以使用`<filesystem>`库,它是C++17引入的一个标准库,用于处理文件系统操作。首先,你需要包含头文件`#include <filesystem>`。以下是一个简单的示例,展示了如何删除一个已存在的文件:
```cpp
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
try {
// 指定你要删除的文件路径
fs::path filePath("example.txt");
// 使用remove函数删除文件
if (fs::exists(filePath)) {
fs::remove(filePath);
std::cout << "File " << filePath.string() << " has been successfully removed.\n";
} else {
std::cout << "The file does not exist at the specified path.\n";
}
} catch (const fs::filesystem_error& e) {
std::cerr << "An error occurred while removing the file: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,如果文件存在,它会被删除;如果不存在,会输出一条相应的消息。务必小心,因为`fs::remove`操作是不可逆的。
C++ filesystem 取后三项
你可以使用`std::filesystem::path`类的`std::distance`和`std::prev`函数来获取路径中的后三项。具体来说,你可以使用`std::distance`函数计算路径中元素的个数,并使用`std::prev`函数获取路径中从末尾开始数的前三个元素。以下是示例代码:
```c++
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
std::string path_str = "/usr/local/bin";
fs::path p(path_str);
// 获取后三个元素
auto it = std::prev(p.end(), 3);
for (; it != p.end(); ++it) {
std::cout << *it << std::endl;
}
return 0;
}
```
在上面的代码中,首先将路径字符串`"/usr/local/bin"`转换为`std::filesystem::path`类型的对象`p`。然后,使用`std::prev(p.end(), 3)`获取从末尾开始数的前三个元素的迭代器,最终使用循环输出了后三个元素`"local"`、`"bin"`和空字符串。注意,路径中的最后一个元素可能是空字符串,因此在使用时需要进行判断。
阅读全文