最終更新日時(UTC):
が更新

履歴 編集

function template
<regex>

std::regex_traits::transform(C++11)

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++: ??

参照