我截断了以下代码,它在 mingw(gcc) 和 msvc 上产生以下输出:
std::cout << std::filesystem::relative("D:/home/freddy", "C:/home") << std::endl;
明格(GCC):
"\\home\\freddy"
msvc:
""
gcc 和 clang(都在 linux 上执行):
"../../D:/home/freddy"
在我看来它应该是""
or "../../D:/home/freddy"
,因为在 root_paths 上没有相对路径,但没有擦除根路径的相对路径。
此外,当驱动器不存在时,MSVC 将失败,因为驱动器“尚未准备好”:
weakly_canonical: Das Gerõt ist nicht bereit.: "D:/home/freddy"
这也似乎是一个 MSVC 错误std::filesystem::weakly_canonical