【发布时间】:2020-04-21 19:06:06
【问题描述】:
我的问题类似于以下内容:要确定 Windows 平台上的两条路径是否相同,比较路径不区分大小写,ei。 “C:\test.txt”和“C:\Test.txt”解析为相同的文件元素。例如,我可以通过使用std::filesystem::equal 轻松解决这个问题,但是对于这个特殊问题,我想在操作系统往返时节省一点(在空闲时运行并在每个循环上进行 100 次以上的比较 - 我很害怕它会很明显)
using path = std::filesystem::path;
const bool result = (path("C:\\test.txt").lexically_normal().make_preferred().native() == path("C:\\Test.txt").lexically_normal().make_preferred().native());
在比较std::filesystem::path 时,即使通过调用lexical_normal 进行词法规范化也是以通用方式完成的,因此会考虑这种情况。这当然是有道理的,但是除了自己进行字符串比较之外,我看不到在不比较的情况下对库进行此操作的方法:是否有可能以某种方式覆盖路径的比较方式?
我也查看了boost::filesystem,但据我所知也没有解决问题。
【问题讨论】:
-
我相信这取决于操作系统的文件系统。在 Windows 上,它不区分大小写,随后
std::filesystem::path应该是相同的。另一方面,在 Linux 文件系统上,它是区分大小写的。
标签: c++ c++17 std-filesystem