【发布时间】:2018-01-11 10:22:52
【问题描述】:
当对wstrings 的向量进行排序时:
vector<wstring> v;
v.push_back(L"zzz");
v.push_back(L"BBB");
v.push_back(L"aaa");
sort(v.begin(), v.end());
结果是 BBB、aaa、zzz。 如何改为不区分大小写?
我试过了
sort(v.begin(), v.end(),
[](wstring lhs, wstring rhs) { return tolower(lhs) < tolower(rhs); });
但没有任何成功,因为tolower 仅适用于 char / wchar_t,而不适用于 wstring。
我可能必须使用lexicographical_compare,但我不知道如何使用。
(由于我正在寻找一种有效的排序方式,能够在短时间内对数百万个 wstrings 进行排序,我认为暂时存储所有 wstrings 小写的副本,并对这个第二个向量进行排序不是一个好方法想法?)
【问题讨论】:
-
当您使用 Unicode 时,您可以为 Unicode“字符”定义不区分大小写吗? (注意它不是 1 ASCII 集之外的 1 映射)
-
@0x5453 已经尝试过,它也不起作用。