名前空間
変種
操作

std::ctype_byname

From cppreference.com
< cpp‎ | locale
 
 
 
 
ヘッダー <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> から継承 (CharTchar でない場合のみ)

ネストされた型

定義
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 メンバ関数) [edit]
[virtual]
指定された分類に準拠するシーケンス内の最初の文字を検索します。
(std::ctype<CharT>のvirtual protected member function) [編集]
[virtual]
指定された分類に失敗するシーケンス内の最初の文字を検索します
(std::ctype<CharT>のvirtual protected member function) [編集]

std::ctype<char> から継承 (CharTchar の場合のみ)

ネストされた型

定義
char_type char

データメンバ

メンバ 説明
std::locale::id id [static] ファセットの識別子
const std::size_t table_size [static] 分類テーブルのサイズ、少なくとも256。

メンバ関数

文字分類テーブルを取得します。
(std::ctype<char>のpublic member function) [編集]
"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 の特殊化
(クラステンプレートの特殊化) [編集]
English 日本語 中文(简体) 中文(繁體)