• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <regex>

    std::basic_regex::assign

    basic_regex& assign(const basic_regex& that);                   // (1)
    
    basic_regex& assign(basic_regex&& that) noexcept;               // (2)
    
    basic_regex& assign(const charT* ptr,
                        flag_type f = regex_constants::ECMAScript); // (3)
    
    basic_regex& assign(const charT* ptr, size_t len,
                        flag_type f = regex_constants::ECMAScript); // (4)
    
    template <class ST, class SA>
    basic_regex& assign(const basic_string<charT, ST, SA>& p,
                        flag_type f = regex_constants::ECMAScript); // (5)
    
    template <class InputIterator>
    basic_regex& assign(InputIterator first, InputIterator last,
                        flag_type f = regex_constants::ECMAScript); // (6)
    
    basic_regex& assign(initializer_list<charT> il,
                        flag_type f = regex_constants::ECMAScript); // (7)
    

    概要

    正規表現オブジェクトを代入する。

    要件

    • InputIterator は入力イテレータの要件を満たすこと。

    効果

    • (1) that*this にコピーする。
    • (2) that*this にムーブ代入する。
    • (3) assign(string_type(ptr), f) と等価。
    • (4) assign(string_type(ptr, len), f) と等価。
    • (5) 引数 f で指定されたフラグに従って、文字列 p で指定された正規表現を *this に代入する。文字列 p が有効な正規表現で無い場合には、例外 regex_error を投げる。
      例外が投げられた場合、*this は変更されない。
    • (6) assign(string_type(first, last), f) と等価。
    • (7) assign(il.begin(), il.end(), f) と等価。

    事後条件

    • (1) flags()mark_count は、それぞれ that.flags()that.mark_count を返す。
    • (2) flags()mark_count は、それぞれ that.flags()that.mark_count の元の値を返す。
      that未規定の有効な状態である。
    • (3) -
    • (4) -
    • (5) 例外が投げられなければ、flags() は引数 f を、mark_count は指定された正規表現内のキャプチャグループの数を返す。
    • (6) -
    • (7) -

    戻り値

    *this

    備考

    • charTbasic_regex の 1 番目のテンプレートパラメータで、文字型である。
    • string_typetraits_type::string_type の別名で、デフォルトは basic_string<charT> である。
    • traits_typebasic_regex の 2 番目のテンプレートパラメータで、デフォルトは regex_traits<charT> である。
    • flag_typeregex_constants::syntax_option_type の別名である。

    #include <iostream>
    #include <regex>
    #include <string>
    
    int main()
    {
      const char s[] = " abc ";
      std::regex re;
      std::cout << std::boolalpha;
    
      const std::regex re1("\\w+");
      re = re1;                                             // (1) の形式
      std::cout << std::regex_search(s, re) << std::endl;
    
      re = std::regex("\\d+");                              // (2) の形式
      std::cout << std::regex_search(s, re) << std::endl;
    
      re = "\\w+";                                          // (3) の形式
      std::cout << std::regex_search(s, re) << std::endl;
    
      re = { '\\', 'd', '+' };                              // (4) の形式
      std::cout << std::regex_search(s, re) << std::endl;
    
      const std::string p = "\\w+";
      re = p;                                               // (5) の形式
      std::cout << std::regex_search(s, re) << std::endl;
    }
    

    出力

    true
    false
    true
    false
    true
    

    バージョン

    言語

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

    備考

    Clang バージョン 3.0 は initializer_list に対応していないため、(7) の形式は提供されていない。
    また、Clang(libc++) では例外が発生した場合に *this が元の状態を保持せずに中途半端に更新されてしまう。

    参照