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语言更加规范