namespace std {
template <class CharT>
struct regex_traits;
}
概要
regex_traits
は、正規表現ライブラリ<regex>
クラス内で使用される、文字とその変換の規則に関する特性を表すクラスである。
標準ライブラリは std::regex_traits<char>
と std::regex_traits<wchar_t>
に対し有効な特殊化を定義する。それ以外の型については、このクラスと同じインタフェースのクラスを実装することで、特定の文字コードの場合に、正規表現の振る舞いをカスタマイズできる。
メンバ関数
構築・破棄
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++11 |
~regex_traits() = default; |
デストラクタ | C++11 |
regex_traits& operator=(const regex_traits&) = default; regex_traits& operator=(regex_traits&&) = default; |
代入演算子 | C++11 |
変換
名前 | 説明 | 対応バージョン |
---|---|---|
translate |
与えられた文字と等価の文字を取得する | C++11 |
translate_nocase |
与えられた文字列と大文字・小文字を区別せずに等価な文字列を取得する | C++11 |
transform |
与えられた範囲を、並べ替えのキーとして使用する、文字のシーケンスに変換する | C++11 |
transform_primary |
与えられた文字の範囲を、並べ替えのキーとして使用する、大文字・小文字を区別しない文字のシーケンスに変換する | C++11 |
lookup_collatename |
与えられた文字の範囲に対応する照合名を取得する | C++11 |
lookup_classname |
与えられた文字の範囲に対応するクラス名を取得する | C++11 |
isctype |
文字が特定のクラスに属しているかを判定する | C++11 |
value |
文字の整数表現を取得する | C++11 |
imbue |
ロケールを設定する | C++11 |
getloc |
ロケールを取得する | C++11 |
静的メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
length |
文字列の長さを取得する | C++11 |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
char_type |
テンプレートパラメータCharT |
C++11 |
string_type |
char_type 文字を要素とする文字列型 std::basic_string<char_type> |
C++11 |
locale_type |
ロケール型 std::locale |
C++11 |
char_class_type |
正規表現の文字クラス名を表す、実装定義のビットマスク型 | C++11 |
例
#include <iostream>
#include <regex>
#include <string>
int main()
{
std::regex_traits<char> traits;
std::string class_name = "alnum"; // 正規表現中で[[:alnum:]]のように入力するクラス名
// 文字'a'がアルファベットと数字のクラスに含まれているかを判定する
if (traits.isctype('a', traits.lookup_classname(class_name.begin(), class_name.end()))) {
std::cout << "'a' is alpha-numeric class" << std::endl;
}
else {
std::cout << "'a' is not alpha-numeric class" << std::endl;
}
}
xxxxxxxxxx
#include <iostream>
#include <regex>
#include <string>
int main()
{
std::regex_traits<char> traits;
std::string class_name = "alnum"; // 正規表現中で[[:alnum:]]のように入力するクラス名
// 文字'a'がアルファベットと数字のクラスに含まれているかを判定する
if (traits.isctype('a', traits.lookup_classname(class_name.begin(), class_name.end()))) {
std::cout << "'a' is alpha-numeric class" << std::endl;
}
else {
std::cout << "'a' is not alpha-numeric class" << std::endl;
}
}
出力
'a' is alpha-numeric class
バージョン
言語
- 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++: ??