gpt4 book ai didi

c++ - 文件系统路径字符串方法返回 mixed\and/

转载 作者:行者123 更新时间:2023-11-30 03:14:16 25 4
gpt4 key购买 nike

我有一个 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 });
}

关于c++ - 文件系统路径字符串方法返回 mixed\and/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957190/

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