首页 > 解决方案 > 在 macOS 上获取大小写正确的文件名

问题描述

我在 macOS 上(文件名不区分大小写),我需要找出文件的实际大小写正确名称。例如,我不知道我的文件是否具有名称 A.txt 或 a.txt 或 A.TXT 或 a.TXT 等。我想在屏幕上正确显示名称。

C/C++ 中最快的方法是什么?

更新:我也尝试过<filesystem>Qt 框架(我的应用程序在 Qt 中)。但是,这些库唯一可能的解决方案似乎是读取父目录中所有条目的完整列表,然后比较这些子项中是否有任何与给定名称模式匹配。出于性能原因,这显然是不可行的。

标签: c++cmacos

解决方案


std::filesystem::canonical将文件的大小写转换为磁盘路径(至少在 macOS 和 Windows 上的 Visual Studio 上,我不确定这是标准的要求):

在当前目录中使用名为test.cpp以下程序的文件打印:

"/Users/user/test.cpp"
#include <filesystem>
#include <iostream>

int main()
{
  std::filesystem::path p("TEST.cpp");
  std::cout << std::filesystem::canonical(p) << "\n";
}

同样的程序也适用于绝对路径。


推荐阅读