template <class ForwardIterator>
string_type transform(ForwardIterator first, ForwardIterator last) const;
概要
与えられた文字範囲[first, last)
を、並べ替えのキーとして使用する、文字のシーケンスに変換する。結果のシーケンスは、ロケールごとの照合順序となる。
戻り値
string_type str(first, last);
return use_facet<collate<char_type>>(getloc())
.transform(str.data(), str.data() + str.length());
例
#include <regex>
#include <cassert>
int main()
{
std::regex_traits<char> traits;
const std::string a = "a";
const std::string b = "B";
{
const std::string key_a = traits.transform(a.begin(), a.end());
const std::string key_b = traits.transform(b.begin(), b.end());
assert(key_a > key_b);
}
{
// Latin2
traits.imbue(std::locale("cs_CZ.ISO8859-2"));
const std::string key_a = traits.transform(a.begin(), a.end());
const std::string key_b = traits.transform(b.begin(), b.end());
assert(key_a < key_b);
}
}
出力
バージョン
言語
- 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++: ??