filesystem拿取图片名字
时间: 2023-07-15 14:11:55 浏览: 36
如果你使用C++的标准库中的filesystem库来遍历一个文件夹中的所有文件,可以使用path().filename()方法来获取文件名字,例如:
```c++
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main() {
fs::path folder_path = "path/to/folder";
for (const auto &file : fs::directory_iterator(folder_path)) {
std::cout << file.path().filename() << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先定义了一个文件夹路径 `folder_path`,然后使用 `directory_iterator` 遍历文件夹中的所有文件,对于每个文件,使用 `path().filename()` 方法获取文件名字,并将其输出到控制台。
相关问题
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"`和空字符串。注意,路径中的最后一个元素可能是空字符串,因此在使用时需要进行判断。
C++ filesystem 取路径的后几项
你可以使用C++17中的std::filesystem库来获取路径的后几项。具体来说,你可以使用std::filesystem::path::filename()和std::filesystem::path::parent_path()来获取路径的最后一项和上一级路径,然后可以通过递归调用parent_path()方法来获取路径的更上层级。以下是一个示例代码:
```c++
#include <filesystem>
#include <iostream>
int main() {
std::filesystem::path myPath = "/home/user/folder/file.txt";
int levels = 2;
std::string result = "";
for (int i = 0; i < levels; i++) {
result = myPath.filename().string() + "/" + result;
myPath = myPath.parent_path();
}
std::cout << "The last " << levels << " levels of the path are: " << result << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个路径myPath和一个要获取的层数levels。然后我们使用一个循环来递归遍历myPath的父级路径,并将每个路径的最后一项添加到结果字符串中。最后,我们输出结果字符串以获取路径的最后levels项。