最終更新日時:
が更新

履歴 編集

function
<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.begin(), &*str.begin() + 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

処理系