gpt4 book ai didi

c++ - 为什么 std::filesystem::path::root_name() 返回空字符串?

转载 作者:行者123 更新时间:2023-12-01 14:47:25 39 4
gpt4 key购买 nike

我有以下示例代码,这些代码是在 Visual Studio 2019 和 https://godbolt.org/ 上运行的.我可以看到有两种不同的行为。可能的原因是什么?

#include <iostream>
#include <filesystem>


int main()
{
std::filesystem::path p("//net");
std::cout << "root name of " << p << " is " << p.root_name() << std::endl;
}
Visualstudio 2019 中的输出:“//net”的根名称为“//net”
输出在 https://godbolt.org/ : "//net"的根名称是 ""
enter image description here
我刚看完 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf - 8.4.9 路径分解【path.decompose】
但不明白原因。
另外,我在 std::filesystem 中阅读了以下代码但听不懂
        _NODISCARD path root_name() const {
// parse the root-name from *this and return a copy if present; otherwise, return the empty path
return _Parse_root_name(_Text);
}
有没有人可以更详细地解释我以了解问题?

最佳答案

Compiler Explorer 在 上运行大部分编译器POSIX 系统。 POSIX 允许实现解释前导 //foo类似于 Windows 如何解释前导 \\foo : 作为网络文件系统的主机名。 (Windows 实际上支持任何一种斜杠,如您的示例所示。)但是,现代实现不这样做(而是依赖于某些目录中的自动挂载,例如 /net),因此 //foo只是意味着 /foo ,它和其他所有东西一样都在一个 Unix 根目录下 / . filesystem::path不将该全局根视为具有 姓名 \\host的意义上或 C:从 Windows。

关于c++ - 为什么 std::filesystem::path::root_name() 返回空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62739003/

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