我想从std::experimental::filesystem
迁移到std::filesystem
,但我的单元测试开始中断。我使用Windows,VS2019和MSVC编译器与/std:c++latest
。
我将问题缩小到标准和实验代码库中的追加方法(和operator/=
(之间的差异。
#include <filesystem>
#include <experimental/filesystem>
int main() {
std::filesystem::path p1 = "C:\temp";
p1 /= "\test\file.txt"; // Expected: C:temptestfile.txt, Actual C:testfile.txt
std::experimental::filesystem::path p2 = "C:\temp";
p2 /= "\test\file.txt"; // Expected: C:temptestfile.txt, Actual C:temptestfile.txt
}
问:如何使用std::filesystem
在 Windows 上附加两个路径组件以获取C:temptestfile.txt
?
当你附加一个绝对路径时,它会替换p1
的所有组件,你需要从\test\file.txt
中删除前导斜杠,使其成为相对路径,以便它附加到p1
:
p1 /= "test\file.txt";