std::collate
来自cppreference.com
在标头 <locale> 定义
|
||
template< class CharT > class collate; |
||
类 std::collate
封装字符串的本地环境限定对照(比较)和哈希。此平面为 std::basic_regex 所用,并能以 std::locale::operator() 直接应用到所有期待字符串比较谓词的标准算法。
继承图
特化
标准库保证提供以下特化(所有本地环境对象都需要实现这些特化):
在标头
<locale> 定义 | |
std::collate<char> | 实现字节字符串的字典序定序 |
std::collate<wchar_t> | 实现宽字符串的字典序定序 |
成员类型
成员类型 | 定义 |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
成员函数
构造新的 collate 平面 (公开成员函数) | |
销毁 collate 平面 (受保护成员函数) | |
调用 do_compare (公开成员函数) | |
调用 do_transform (公开成员函数) | |
调用 do_hash (公开成员函数) |
成员对象
static std::locale::id id |
本地环境的 id (公开成员对象) |
受保护成员函数
[虚] |
用此平面的对照规则比较二个字符串 (虚受保护成员函数) |
[虚] |
变换字符串,使得能用比较替换对照 (虚受保护成员函数) |
[虚] |
生成使用此平面对照规则的整数哈希值 (虚受保护成员函数) |
示例
运行此代码
#include <locale> #include <iostream> #include <string> #include <vector> #include <algorithm> int main() { std::wcout.imbue(std::locale("")); std::vector<std::wstring> v = {L"ar", L"zebra", L"\u00f6grupp", L"Zebra", L"\u00e4ngel", L"\u00e5r", L"f\u00f6rnamn"}; std::wcout << "默认本地环境对照顺序: "; std::sort(v.begin(), v.end()); for (auto s : v) std::wcout << s << ' '; std::wcout << '\n'; std::wcout << "英文本地环境对照顺序: "; std::sort(v.begin(), v.end(), std::locale("en_US.UTF-8")); for (auto s : v) std::wcout << s << ' '; std::wcout << '\n'; std::wcout << "瑞典文本地环境对照顺序:"; std::sort(v.begin(), v.end(), std::locale("sv_SE.UTF-8")); for (auto s : v) std::wcout << s << ' '; std::wcout << '\n'; }
输出:
默认本地环境对照顺序: Zebra ar förnamn zebra ängel år ögrupp 英文本地环境对照顺序: ängel ar år förnamn ögrupp zebra Zebra 瑞典文本地环境对照顺序:ar förnamn zebra Zebra år ängel ögrupp
参阅
用此 locale 的 collate 刻面以字典序比较两个字符串 ( std::locale 的公开成员函数) | |
表示系统提供的具名本地环境的 std::collate (类模板) |