有没有一种方法可以忽略 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 文件中列名上方的行?

C++ 和 QML 中的 QT QML 项

如何使用 Qt Creator 将 C++ 头文件添加到 Qt 项目

在Qt(或者C++)中,有没有办法得到一个类的变量的名字?

切换分支时如何忽略某些文件中的某些更改?

有啥方法可以避免 C++ 中的“调试断言失败”窗口?