相关疑难解决方法(0)

如果 p 以根路径开头,为什么 std::filesystem::path::append 替换当前路径

给出以下代码:

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
    fs::path fsBase = "/base";
    fs::path fsAppend = "/append";
    auto fsResult = fsBase / fsAppend;

    std::cout << "fsResult: " << fsResult << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

通常,预期的结果是/base/append,但它实际上给出了/append

fs::path::append的描述确实表明了这种行为:

如果 p.is_absolute() || (p.has_root_name() && p.root_name() != root_name()),然后用 p 替换当前路径,就像用 operator=(p) 并完成一样。

然而,行为std::experimental::filesystemboost::filesystem不同的是,这给了预期/base/append。请参阅示例

问题是为什么它会这样?为什么用append()函数替换路径?

c++ boost-filesystem c++17

5
推荐指数
1
解决办法
2125
查看次数

标签 统计

boost-filesystem ×1

c++ ×1

c++17 ×1