std::ctype_byname
From cppreference.com
| ヘッダー <locale> で定義 |
||
| template< class CharT > class ctype_byname : public std::ctype<CharT>; |
||
std::ctype_byname は、構築時に指定されたロケールの文字分類規則をカプセル化する std::ctype ファセットです。
目次 |
[編集] Specializations
標準ライブラリは、以下の特殊化を提供することが保証されています。
| ヘッダー
<locale> で定義 | |
| std::ctype_byname<char> | ナロー文字の分類を提供します(文字分類のためにテーブルルックアップを使用します)。 |
| std::ctype_byname<wchar_t> | ワイド文字の分類を提供します。 |
[編集] Nested types
| 型 | 定義 |
mask
|
typename std::ctype<CharT>::mask |
[編集] Member functions
| (コンストラクタ) |
新しいctype_bynameファセットを構築します。(public member function) |
| (デストラクタ) |
ctype_bynameファセットを破棄します。(protected member function) |
std::ctype_byname::ctype_byname
| explicit ctype_byname( const char* name, std::size_t refs = 0 ); |
||
| explicit ctype_byname( const std::string& name, std::size_t refs = 0 ); |
(C++11以降) | |
name のロケール用の新しいstd::ctype_bynameファセットを構築します。
refs はリソース管理に使用されます。 refs == 0 の場合、それを持つ最後の std::locale オブジェクトが破棄されるときに、実装はファセットを破棄します。それ以外の場合、オブジェクトは破棄されません。
パラメータ
| name | - | ロケールの名前 |
| refs | - | ファセットを参照する参照の数 |
std::ctype_byname::~ctype_byname
| protected: ~ctype_byname(); |
||
ファセットを破棄します。
std::ctype<CharT> から継承 (CharT が char でない場合のみ)
ネストされた型
| 型 | 定義 |
char_type
|
CharT
|
データメンバ
| メンバ | 説明 |
std::locale::id id [static] |
ファセットの識別子 |
メンバ関数
do_isを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_scan_isを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_scan_notを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_toupperを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_tolowerを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_widenを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_narrowを呼び出します。(public member function of std::ctype<CharT>) |
Protected member functions
| [virtual] |
文字または文字を大文字に変換します。 ( std::ctype<CharT>のvirtual protected member function) |
| [virtual] |
文字または文字を小文字に変換します。 ( std::ctype<CharT>のvirtual protected member function) |
| [virtual] |
charからCharTへ文字または文字を変換します。(virtual protected member function of std::ctype<CharT>) |
| [virtual] |
CharTからcharへ文字または文字を変換します。( std::ctype<CharT>のvirtual protected member function) |
| [virtual] |
文字または文字シーケンスを分類します ( std::ctype<CharT> の仮想 protected メンバ関数) |
| [virtual] |
指定された分類に準拠するシーケンス内の最初の文字を検索します。 ( std::ctype<CharT>のvirtual protected member function) |
| [virtual] |
指定された分類に失敗するシーケンス内の最初の文字を検索します ( std::ctype<CharT>のvirtual protected member function) |
std::ctype<char> から継承 (CharT が char の場合のみ)
ネストされた型
| 型 | 定義 |
char_type
|
char |
データメンバ
| メンバ | 説明 |
std::locale::id id [static] |
ファセットの識別子 |
const std::size_t table_size [static] |
分類テーブルのサイズ、少なくとも256。 |
メンバ関数
| 文字分類テーブルを取得します。 ( std::ctype<char>のpublic member function) | |
| [static] |
"C"ロケールの文字分類テーブルを取得します。 ( std::ctype<char>のpublic static member function) |
| 分類テーブルを使用して、文字または文字シーケンスを分類します。 ( std::ctype<char>のpublic member function) | |
| 分類テーブルを使用して、指定された分類に適合するシーケンス内の最初の文字を検索します。 ( std::ctype<char>のpublic member function) | |
| 分類テーブルを使用して、指定された分類に失敗するシーケンス内の最初の文字を検索します。 ( std::ctype<char>のpublic member function) | |
do_toupperを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_tolowerを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_widenを呼び出します。( std::ctype<CharT>のpublic member function) | |
do_narrowを呼び出します。(public member function of std::ctype<CharT>) |
Protected member functions
| [virtual] |
文字または文字を大文字に変換します。 ( std::ctype<CharT>のvirtual protected member function) |
| [virtual] |
文字または文字を小文字に変換します。 ( std::ctype<CharT>のvirtual protected member function) |
| [virtual] |
charからCharTへ文字または文字を変換します。(virtual protected member function of std::ctype<CharT>) |
| [virtual] |
CharTからcharへ文字または文字を変換します。( std::ctype<CharT>のvirtual protected member function) |
std::ctype_baseから継承
ネストされた型
| 型 | 定義 |
mask
|
未指定のBitmaskType型(列挙型、整数型、またはビットセット) |
メンバ定数
| スペース [static] |
空白文字の分類を識別するmaskの値(公開静的メンバ定数) |
| print [static] |
印刷可能文字の分類を識別するmaskの値(公開静的メンバ定数) |
| cntrl [static] |
制御文字の分類を識別するmaskの値(公開静的メンバ定数) |
| upper [static] |
大文字の分類を識別するmaskの値(公開静的メンバ定数) |
| lower [static] |
小文字の分類を識別するmaskの値(公開静的メンバ定数) |
| alpha [static] |
アルファベット文字の分類を識別するmaskの値(公開静的メンバ定数) |
| digit [static] |
数字文字の分類を識別するmaskの値(公開静的メンバ定数) |
| punct [static] |
句読点文字の分類を識別するmaskの値(公開静的メンバ定数) |
| xdigit [static] |
16進数数字の分類を識別するmaskの値(公開静的メンバ定数) |
| blank [static] (C++11) |
空白文字の分類を識別するmaskの値(公開静的メンバ定数) |
| alnum [static] |
alpha | digit (公開静的メンバ定数) |
| graph [static] |
alnum | punct (公開静的メンバ定数) |
[編集] Notes
std::ctype_byname<char> は、<locale> のシノプシスで明示的特殊化として誤って宣言されていましたが、LWG issue 1298 の解決により宣言は削除されました。しかし、std::ctype_byname<wchar_t> と同様に、必要な特殊化として残っています。
[編集] Example
このコードを実行
#include <iostream> #include <locale> int main() { wchar_t c = L'\u00de'; // capital letter thorn std::locale loc("C"); std::cout << "isupper('Þ', C locale) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; loc = std::locale(loc, new std::ctype_byname<wchar_t>("en_US.utf8")); std::cout << "isupper('Þ', C locale with Unicode ctype) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; }
出力
isupper('Þ', C locale) returned false
isupper('Þ', C locale with Unicode ctype) returned true[編集] Defect reports
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 16 | C++98 | 明示的特殊化 std::ctype_byname<char> の定義で、do_narrow の名前とパラメータリストが誤って指定されていました。misspecified the name and parameter list of do_narrow |
修正済み |
| LWG 616 | C++98 | mask の定義で typename 識別子が欠落していました。 |
追加された |
[編集] See also
| 文字分類テーブルを定義する (クラステンプレート) | |
| char 型に対する std::ctype の特殊化 (クラステンプレートの特殊化) |