gpt4 book ai didi

c++ - 具有一致路径分隔的 std::filesystem::recursive_directory_iterator?

转载 作者:行者123 更新时间:2023-12-05 03:30:18 26 4
gpt4 key购买 nike

我刚刚注意到 std::filesystem::recursive_directory_iterator 使用不同的路径分隔符(即 / vs \),这取决于它是否打开Windows 或 Linux,是否有办法让它返回带有 '/' 的路径以使其在系统间保持一致?

这就是我获取路径的方式:

for(auto& path: fs::recursive_directory_iterator(dir_path))
{
// Skip directories in the enumeration.
if(fs::is_directory(path)) continue;
string path_str = path.path().string();
}

我的意思是,path_str 的内容在两个操作系统之间会有所不同(因为分隔符会不同),我希望它们相同。我可以只在最后的字符串上替换它们,但是这比我可以指示 STL 对所有内容使用“/”是无效的要使用更多的周期。

最佳答案

因此,您的问题与 recursive_directory_iterator 无关,它迭代 directory_entry 对象,而不是路径。您的困惑可能源于目录条目可以隐式转换为路径,因此您可以这样使用它们。

你的问题实际上是关于path::string()as the documentation states , 使用 native 格式(即带有依赖于平台的分隔符)。无论您如何获得路径,您都会遇到同样的问题。

如果要获取/作为目录分隔符,请使用path::generic_string() 获取通用格式的路径。

for(auto& dir_entry: fs::recursive_directory_iterator(dir_path))
{
if(dir_entry.is_directory()) continue;
string path_str = dir_entry.path().generic_string();
}

关于c++ - 具有一致路径分隔的 std::filesystem::recursive_directory_iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70855282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com