该函数boost::filesystem::canonical()
(1.66的文档,当前版本的文档)提供了两个参数(忽略错误代码重载)base
。第一个是规范化的路径,第二个参数是基本路径,如果它是相对的,则用于使第一个路径成为绝对路径。默认情况下current_path()用于此参数。
Boost 1.60 引入了一些新功能,其中boost::filesystem::weakly_canonical()
(1.66的文档,当前版本的文档)。此函数缺少第二个参数。标准化 (C++17) 变体std::filesystem::canonical()
和std::filesystem::weakly_canonical()
(参见cppreference)也是如此。
我想与 交换canonical()
,weakly_canonical()
但我使用了第二个参数。这就是我意识到这个论点被删除的方式。现在我想知道为什么它被删除了,以及我怎样才能让路径成为绝对自己。
我发现了一份缺陷报告,暗示了 C++17 的这个解决方案,但坦率地说,我并没有真正理解其中的原因。我会很高兴有一个解释或者更好的例子,其中 base 的重载会被过度指定。
当然,我想知道如何使用不是当前目录的基本目录将相对路径转换为绝对路径。我是否应该简单地使用cppreferencebase / p
上的提示,因为我知道这是我的目标系统(带有 Visual C++ 的 Windows)上的正确形式?std::filesystem::absolute()