【问题标题】:How to check if two char* file-paths are the same on Windows?如何检查 Windows 上的两个 char* 文件路径是否相同?
【发布时间】:2021-12-02 13:12:38
【问题描述】:

由于windows路径不区分大小写,不区分大小写的字符串比较函数_stricmp是检查两条路径是否被认为相同的可靠方法吗?

虽然这适用于[A-Za-z],但这适用于其他语言吗? 还是不区分大小写的路径比较需要不同的方法?

【问题讨论】:

  • 我认为它在 Windows API 中。
  • Windows 有快捷方式和隐含的驱动器号,所以不同的字符串仍然可以是同一个文件。
  • @stark while true - 这是一个单独的问题。被视为完全匹配的两个路径不同于恰好解析为同一文件的两个路径。

标签: c windows filepath case-insensitive


【解决方案1】:

tolower/toupper 保证会考虑当前的语言环境。所以可移植的方法是先使用字符串中的任何一个,然后将结果传递给strcmp

至于strcmp如何对特定于语言环境的字符进行排序,并没有很好的定义,但如果你只是用它来测试是否相等,那就无所谓了。

【讨论】:

  • 从文档看来 tolower/toupper 不处理 unicode。
  • @ideasman42 towlower/towupper 来自 wctype.h
  • 这意味着将char * 转换为wchat_t*(很好,但涉及更多)。
  • @ideasman42 不,这意味着您应该使用与您的编码匹配的适当函数集。
  • 既然有多种方法可以执行这种操作——应该使用哪个函数来检测和转换char *?哪些函数保证与 MS-Windows 路径处理相同的行为?
猜你喜欢
  • 2014-06-11
  • 1970-01-01
  • 2023-02-10
  • 2014-08-23
  • 2019-04-27
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
相关资源
最近更新 更多