名前空間
変種
操作

std::ctype_byname

提供: cppreference.com
< cpp‎ | locale
 
 
 
ヘッダ <locale> で定義
template< class CharT >
class ctype_byname : public std::ctype<CharT>;

std::ctype_byname は構築時に指定されたロケールの文字分類ルールをカプセル化する std::ctype ファセットです。

2つの特殊化が標準ライブラリによって提供されます。

ヘッダ <locale> で定義
std::ctype_byname<char> ナロー文字の分類を提供します。 この特殊化は文字の分類のためにテーブルルックアップを使用します
std::ctype_byname<wchar_t> ワイド文字の分類を提供します

目次

[編集] メンバ型

メンバ型 定義
mask ctype<CharT>::mask

[編集] メンバ関数

コンストラクタ
新しい ctype_byname ファセットを構築します
(パブリックメンバ関数) [edit]
デストラクタ
ctype_byname ファセットを破棄します
(プロテクテッドメンバ関数) [edit]

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> から継承

メンバ型

メンバ型 定義
char_type CharT

メンバオブジェクト

メンバ名
static std::locale::id id
[static]
ロケールの id
(パブリック静的メンバ定数)
CharTchar の場合は、 std::ctype<char> の以下のメンバが継承されます
static const std::size_t table_size
[static]
分類テーブルのサイズ、少なくとも256
(パブリック静的メンバ定数)

メンバ関数

do_is を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
do_scan_is を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
do_scan_not を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
do_toupper を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
do_tolower を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
do_widen を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
do_narrow を呼びます
(std::ctypeのパブリックメンバ関数) [edit]
CharTchar の場合は、 std::ctype<char> の以下のメンバが継承されます
文字分類テーブルを取得します
(std::ctype<char>のパブリックメンバ関数) [edit]
"C" ロケールの文字分類テーブルを取得します
(std::ctype<char>のパブリック静的メンバ関数) [edit]

プロテクテッドメンバ関数

[仮想]
文字を大文字に変換します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]
[仮想]
文字を小文字に変換します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]
[仮想]
文字を char から charT に変換します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]
[仮想]
文字を charT から char に変換します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]
CharTchar の場合は、 std::ctype の以下のメンバは継承されません
[仮想]
文字を分類します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]
[仮想]
指定された分類に分類される文字シーケンス内の最初の文字を探します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]
[仮想]
指定された分類に分類されないシーケンス内の最初の文字を探します
(std::ctypeの仮想プロテクテッドメンバ関数) [edit]

std::ctype_base から継承

メンバ型

定義
mask 未規定なビットマスク型 (列挙、整数型、またはビット集合)

メンバ定数

space
[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
(パブリック静的メンバ定数)

[編集] ノート

明示的特殊化 std::ctype_byname<char> は C++11 までヘッダファイル <locale> に別のエントリとして掲載されていました。 これは C++11 で defect #1298 として削除されましたが、要求される特殊化は std::ctype_byname<wchar_t> と同様に残されています。

[編集]

#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

[編集] 関連項目

文字分類テーブルを定義します
(クラステンプレート) [edit]
char 型に対する std::ctype の特殊化
(クラステンプレートの特殊化) [edit]