Pat*_*ick 5 c++ windows case-insensitive visual-studio
我正在研究我的应用程序中不区分大小写的处理方式。到目前为止,我意识到有两种不同的情况:
\n\n对于情况 1,您应该始终使用用户的区域设置。这意味着,例如,当对列表中的项目进行排序时,并且您希望不区分大小写地进行排序,那么您应该使用区域设置感知的不区分大小写的字符串比较函数。
\n\n对于情况 2,您不想使用用户的区域设置似乎是合乎逻辑的,因为如果您的用户使用不同的区域设置,但仍然使用相同的数据集,这可能会产生不良影响(例如,如果您正在管理图书馆软件,则可以使用书籍的名称作为数据库中书籍实例的键,并且希望处理这种不区分大小写的情况(我知道这是一种简化))。
\n\n当使用 STL 容器(如 std::map)时,我注意到将键设置为大写,然后对大写的搜索值执行查找会更有效。这比在地图上循环时执行不区分大小写的比较更有效。对于 std::unordered_map 可能需要执行这样的技巧。
\n\n然而,我意识到这也可能会产生奇怪的效果,我想知道Windows(也使用不区分大小写的文件名)如何处理这些情况。
\n\n例如,德语字符 \xc3\x9f (ringel-S) 在大写时写为 SS。这似乎暗示 \xc3\x9f.txt 和 SS.txt 应该表示相同的文件,因此 \xc3\x9fs.txt 和 s\xc3\x9f.txt 以及 sss.txt 和 SSS.txt 也应该表示相同的文件文件。但根据我的实验,Windows 中似乎并非如此。
\n\n所以我的问题是:
\n\n