繁体   English   中英

std::filesystem 和 std::experimental::filesystem 之间的路径连接差异

[英]Path concat difference between std::filesystem and std::experimental::filesystem

我想从std::experimental::filesystem迁移到std::filesystem ,但我的单元测试开始中断。 我将 Windows、VS2019 和 MSVC 编译器与/std:c++latest

我将问题缩小到标准实验代码库中的 append 方法(和operator/= )之间的差异。

#include <filesystem>
#include <experimental/filesystem>

int main() {
    std::filesystem::path p1 = "C:\\temp";
    p1 /= "\\test\\file.txt";           // Expected: C:\temp\test\file.txt, Actual C:\test\file.txt

    std::experimental::filesystem::path p2 = "C:\\temp";
    p2 /= "\\test\\file.txt";           // Expected: C:\temp\test\file.txt, Actual C:\temp\test\file.txt
}

问题:如何使用std::filesystem在 Windows 上附加两个路径组件以获取C:\\temp\\test\\file.txt

当您附加绝对路径时,它会替换p1所有组件,您需要从\\\\test\\\\file.txt删除前导斜杠以使其成为相对路径,以便将其附加到p1

p1 /= "test\\file.txt";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM