C++ 在不考虑区域设置的情况下处理案例不敏感
我正在调查我的申请中对案件不敏感的处理。到目前为止,我意识到有两种不同的情况:C++ 在不考虑区域设置的情况下处理案例不敏感,c++,windows,visual-studio,case-insensitive,C++,Windows,Visual Studio,Case Insensitive,我正在调查我的申请中对案件不敏感的处理。到目前为止,我意识到有两种不同的情况: 数据对用户是可视化的 数据由内部处理 对于案例1,您应该始终使用用户的区域设置。这意味着,例如,在对列表中的项目进行排序时,如果希望不区分大小写,则应使用区分区域设置、不区分大小写的字符串比较函数 对于案例2,您不想使用用户的区域设置似乎是合乎逻辑的,因为如果用户使用不同的区域设置,但仍然使用相同的数据集,这可能会产生不良影响(例如,如果您正在管理库软件,您可以使用图书的名称作为数据库中图书实例的键,并希望处理不区分
- 应该使用哪些C++和/或Windows函数来减少一个字符串的情况(例如,把它放在大写字母中),那么在执行STD::map(甚至使用STD::无序的映射)时,比较可能更有效吗?
- 关于内部(即非可视化相关)数据的不区分大小写字符串处理的任何其他经验(或文档链接)
LCMAP_UPPERCASE | LCMAP_language_case
仍然无法将其升格为“SS”。微软表示,NTFS文件系统有一个$upcase元文件,“将小写字符转换为匹配的Unicode大写字符”。不知道什么API将访问它,也不知道如何和何时设置此表,也不知道其他文件系统和网络访问。但是,文件系统决定不区分大小写的应用,而不是用户的区域设置,这是有意义的。@Stein此表是在格式化卷AFAIK时创建的,在不同的Windows版本中可能不相同。