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

履歴 編集

function template
<regex>

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

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