最終更新日時: 2026年07月22日 16時08分23秒 (JST)
rotarymars が更新

履歴 編集

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>
    #include <string>

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

## 参照

- LWG Issue 3040. `basic_string_view::starts_with` Effects are incorrect