- regex[meta header]
- std[meta namespace]
- regex_traits[meta class]
- function template[meta id-type]
- cpp11[meta cpp]
template <class ForwardIterator>
string_type transform_primary(ForwardIterator first, ForwardIterator last) const;
与えられた文字範囲[first, last)
を、並べ替えのキーとして使用する、大文字・小文字を区別しない文字のシーケンスに変換する。結果のシーケンスは、ロケールごとの照合順序となる。
typeid(use_facet<collate<char_type>>) == typeid(collate_byname<char_type>)
であり、collate_byname<char_type>::transform(first, last)
が優先順位付きキーに変換できる場合はそのキーを返し、そうでない場合は空文字列を返す。
#include <regex>
#include <cassert>
int main()
{
std::regex_traits<char> traits;
const std::string a = "A";
const std::string a_acute = "Á";
{
const std::string key_a = traits.transform_primary(a.begin(), a.end());
const std::string key_a_acute = traits.transform_primary(a_acute.begin(), a_acute.end());
assert(key_a != key_a_acute);
}
{
// Latin2
traits.imbue(std::locale("cs_CZ.ISO8859-2"));
const std::string key_a = traits.transform_primary(a.begin(), a.end());
const std::string key_a_acute = traits.transform_primary(a_acute.begin(), a_acute.end());
assert(key_a == key_a_acute);
}
}
- transform_primary[color ff0000]
- imbue[link imbue.md]
- std::locale[link /reference/locale/locale.md]
- begin()[link /reference/string/basic_string/begin.md]
- end()[link /reference/string/basic_string/end.md]
- C++11
- Clang: 3.0 [mark verified], 3.1 [mark verified], 3.2 [mark verified], 3.3 [mark verified], 3.4 [mark verified], 3.5 [mark verified], 3.6 [mark verified]
- GCC: 4.9.0 [mark verified], 4.9.1 [mark verified], 4.9.2 [mark verified], 5.0.0 [mark verified]
- ICC: ??
- Visual C++: ??