std::collate
来自cppreference.com
| 在标头 <locale> 定义
|
||
| |
||
类 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>
|
数据成员
| 成员 | 描述 |
std::locale::id id [静态]
|
刻面标识 |
成员函数
构造新的 collate 刻面 (公开成员函数) | |
销毁 collate 刻面 (受保护成员函数) | |
调用 do_compare (公开成员函数) | |
调用 do_transform (公开成员函数) | |
调用 do_hash (公开成员函数) |
受保护成员函数
[虚] |
用此刻面的校排规则比较两个字符串 (虚受保护成员函数) |
[虚] |
变换字符串,使得能用比较替换校排 (虚受保护成员函数) |
[虚] |
使用此刻面的校排规则生成整数散列值 (虚受保护成员函数) |
示例
运行此代码
#include <algorithm>
#include <iostream>
#include <locale>
#include <string>
#include <vector>
int main()
{
std::locale::global(std::locale("en_US.utf8"));
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
参阅
| 用此本地环境的校排刻面以字典序比较两个字符串 ( std::locale 的公开成员函数)
| |
| 表示系统提供的具名本地环境的 std::collate (类模板) |