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  (类模板)  |