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);
}
}
出力
バージョン
言語
- C++11
処理系
- Clang: 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅, 3.4 ✅, 3.5 ✅, 3.6 ✅
- GCC: 4.9.0 ✅, 4.9.1 ✅, 4.9.2 ✅, 5.0.0 ✅
- ICC: ??
- Visual C++: ??