返回混合 \ 和 / 的文件系统路径字符串方法
filesystem path string method returning mixed and /
我有一个C++程序,我在其中使用递归迭代器来浏览我作为程序参数提供的文件夹。
问题是当我在路径上调用 .string 时,我得到的是路径中的混合 \ 和/。 使用.generic_string可以解决此问题,但我想知道这是VS2019中的错误还是允许的行为。
举一些例子: 我给a/b作为我的程序的输入。
当我遍历所有文件并使用 .string 打印它们时 我得到
a/b\c\bla.txt
a/b\d\lol.txt
当我使用.generic_string时,我得到
A/B/C/BLA.txt
A/B/D/LOL.txt
在将用户给出的参数与目录迭代器一起使用之前,请确保将其转换为绝对路径,否则,它将显示用户提供的任何内容。
例:
#include <filesystem>
#include <iostream>
#include <string_view>
#include <vector>
namespace fs = std::filesystem;
int ftw(const fs::path& p) {
// give an absolute path to the iterator
for (const auto& f : fs::recursive_directory_iterator(fs::absolute(p))) {
std::cout << f.path().string() << "n";
}
return 0;
}
int cppmain(const std::string_view program, std::vector<std::string_view> args) {
for (const auto& arg : args)
ftw(arg);
return 0;
}
int main(int argc, char* argv[]) {
return cppmain(argv[0], { argv + 1, argv + argc });
}
相关文章:
- 如何从路径字符串加载Gdiplus::位图
- 如何在C++的路径中插入字符串?
- 如何将文件系统路径转换为字符串
- 返回混合 \ 和 / 的文件系统路径字符串方法
- 无法使用 Poco 获取字符串的路径
- C++ 如何使用字符串中保存的文件路径创建带时间戳的目录
- 如何在 Qt/C++ 中仅将文件路径作为字符串访问文件
- GCC Bug,使用尖括号通过宏包含标头时"linux"路径中的字符串"<>"替换为 "1"
- 使函数接受字符串变量内的路径
- 如何确定具有文件路径的字符串中是否有任何非 ASCII 字符
- C 使用字符串作为打开文件路径的ifstream错误
- 从变量字符串中提升文件系统路径
- C++字符串到字符串打印不正确,无法获取 unicode 路径
- 使用Android NDK从字符串路径打开文件
- 带有空间的拆分字符串路径
- 从设备实例路径字符串获取设备实例 DWORD
- 使用字符串作为打开文件路径时出现ifstream错误
- C ++如何从路径字符串中删除文件名
- 在Linux上使用文件路径字符串,使用什么编码
- 获取dll路径/字符串问题(c++初学者)