有没有一种方法可以忽略 Qt c++ 中的文件名区分大小写?
Posted
技术标签:
【中文标题】有没有一种方法可以忽略 Qt c++ 中的文件名区分大小写?【英文标题】:Is there a method to ignore the file name case senstivity in Qt c++? 【发布时间】:2018-08-09 10:29:16 【问题描述】:我想保存两个具有相同名称的不同文件,每个文件仅在大写和小写中有所不同。我正在使用窗户。 C++ Qt 中是否有忽略区分大小写的函数?
【问题讨论】:
使用QString::toLower()
Windows 不允许您使用 Qt 或任何其他 API。
常规 WinAPI 函数公开的文件名不区分大小写,即使常见的文件系统(例如 NTFS)区分大小写。
【参考方案1】:
Windows 已经忽略了区分大小写,因此只要您在 Windows 上执行代码,您就不必做任何事情来忽略它。
问题是当您需要根据区分大小写来区分两条路径时。你真的应该避免在同一个目录中有同名的文件。
【讨论】:
【参考方案2】:这里的问题是 Windows API 通常不允许创建具有区分大小写名称的文件,尽管 NTFS 文件系统本身支持这一点。
但是,API 中有 CreateFileA
函数,可以使用标志 FILE_FLAG_POSIX_SEMANTICS
调用它,它允许访问名称仅大小写不同的文件。
但是,documentation 也指出:
访问将根据 POSIX 规则进行。这包括对于支持该命名的文件系统,允许多个具有名称(仅大小写不同)的文件。使用此选项时要小心,因为为 MS-DOS 或 16 位 Windows 编写的应用程序可能无法访问使用此标志创建的文件。
我不知道,其他应用程序(如 Windows 资源管理器)在遇到此类文件时会如何表现。
【讨论】:
以上是关于有没有一种方法可以忽略 Qt c++ 中的文件名区分大小写?的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种简单的方法可以使用 OleDbConnection 删除/忽略 Excel 文件中列名上方的行?