MSVC C++ 17 获得词法规范化路径

Posted

技术标签:

【中文标题】MSVC C++ 17 获得词法规范化路径【英文标题】:MSVC C++ 17 get lexically normalized path 【发布时间】:2018-01-05 16:50:10 【问题描述】:

假设我有一个路径p = "C:/some/./path/。我想要规范化路径C:/some/path/。我知道有一个函数path::lexically_normal()(根据cppreference.com)是C++ 17的一部分。但是,根据open std draft中的第16页(在微软的官方documentation中引用),@987654326 @ 不是 path 类的一部分,因此该函数在 MS 的实现中不存在。

是否有任何替代方案(最好在标准库中)?

【问题讨论】:

【参考方案1】:

Visual Studio 实现了文件系统 TS。这就是为什么你必须拼写为std::experimental::filesystem::path 而不是std::filesystem::path

但是,当 C++17 合并 FileSystem TS 时,他们改变了。这包括additions like lexically_normal

没有其他选择,因为您应该使用lexically_normal。这就是它在 C++17 中添加的原因。你只需要等到 VS 完全实现 C++17。

【讨论】:

以上是关于MSVC C++ 17 获得词法规范化路径的主要内容,如果未能解决你的问题,请参考以下文章

MSVC2015 上的实验性 C++17 文件系统:权限不一致

弃用MSVC编译器,使用跨平台编译器CLang,让我们学习C语言更加规范

软甲开发规范

我们可以将 c++ 标准编译与 MSVC 混合使用吗?

如何使用 system() 函数 (MSVC) 编译 c++ 代码?

软件目录结构规范以及在不同目录间进行模块调用