c++ - 在 macOS 上获取大小写正确的文件名
问题描述
我在 macOS 上(文件名不区分大小写),我需要找出文件的实际大小写正确名称。例如,我不知道我的文件是否具有名称 A.txt 或 a.txt 或 A.TXT 或 a.TXT 等。我想在屏幕上正确显示名称。
C/C++ 中最快的方法是什么?
更新:我也尝试过<filesystem>
Qt 框架(我的应用程序在 Qt 中)。但是,这些库唯一可能的解决方案似乎是读取父目录中所有条目的完整列表,然后比较这些子项中是否有任何与给定名称模式匹配。出于性能原因,这显然是不可行的。
解决方案
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";
}
同样的程序也适用于绝对路径。
推荐阅读
- zuora - Zuora payment-methods/credit-cards api 从 java 客户端返回 90000011 但从邮递员返回成功响应
- java - 替换开关盒:接口与抽象类
- mongodb - 通过 mongoDb 的 logstash 更新弹性搜索中的现有数据?
- amazon-web-services - 在不使用 S3 存储桶的情况下部署 AWS 聊天机器人
- flutter - 用户模型上 DocumentSnapshot 的操作员错误
- python - “字典更新序列元素 #0 的长度为 4;需要 2”
- python - Spark创建包含整数和浮点数混合列的数据框
- javascript - 从打字稿中的可观察值中提取值
- python - 合并一个元组在一个元组中填充我的任意数量的元组并返回排序后的
- python - 生成组合后跟每个元素