Namespaces
Variants

std:: ctype_byname

From cppreference.net
ヘッダーで定義 <locale>
template < class CharT >
class ctype_byname : public std:: ctype < CharT > ;

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

目次

特殊化

標準ライブラリは以下の特殊化を提供することが保証されています:

ヘッダーで定義 <locale>
std :: ctype_byname < char > ナローマルチバイト文字の分類を提供(文字分類にテーブル参照を使用)
std :: ctype_byname < wchar_t > ワイド文字の分類を提供

ネスト型

定義
mask typename std:: ctype < CharT > :: mask

メンバー関数

(constructor)
新しい ctype_byname ファセットを構築する
(public member function)
(destructor)
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> の公開メンバ関数)
do_scan_is を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_scan_not を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_toupper を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_tolower を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_widen を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_narrow を呼び出す
std::ctype<CharT> の公開メンバ関数)

保護メンバ関数

[virtual]
1文字または複数文字を大文字に変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
1文字または複数文字を小文字に変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
char から CharT へ1文字または複数文字を変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
CharT から char へ1文字または複数文字を変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
1文字または文字シーケンスを分類する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
指定された分類に適合するシーケンス内の最初の文字を検索する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
指定された分類に失敗するシーケンス内の最初の文字を検索する
std::ctype<CharT> の仮想保護メンバ関数)

std:: ctype<char> から継承 CharT char の場合のみ

ネスト型

定義
char_type char

データメンバ

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

メンバ関数

文字分類テーブルを取得する
std::ctype <char> の公開メンバ関数)
「C」ロケールの文字分類テーブルを取得する
std::ctype <char> の公開静的メンバ関数)
文字または文字シーケンスを分類テーブルを使用して分類する
std::ctype <char> の公開メンバ関数)
指定された分類に適合する最初の文字をシーケンス内で検索する(分類テーブルを使用)
std::ctype <char> の公開メンバ関数)
指定された分類に失敗する最初の文字をシーケンス内で検索する(分類テーブルを使用)
std::ctype <char> の公開メンバ関数)
do_toupper を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_tolower を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_widen を呼び出す
std::ctype<CharT> の公開メンバ関数)
do_narrow を呼び出す
std::ctype<CharT> の公開メンバ関数)

保護メンバ関数

[virtual]
1文字または複数文字を大文字に変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
1文字または複数文字を小文字に変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
char から CharT へ1文字または複数文字を変換する
std::ctype<CharT> の仮想保護メンバ関数)
[virtual]
CharT から char へ1文字または複数文字を変換する
std::ctype<CharT> の仮想保護メンバ関数)

std:: ctype_base から継承

ネストされた型

定義
mask 未指定の BitmaskType 型(列挙型、整数型、またはビットセット)

メンバ定数

space
[static]
空白文字分類を識別する mask の値
(public static member constant)
print
[static]
印字可能文字分類を識別する mask の値
(public static member constant)
cntrl
[static]
制御文字分類を識別する mask の値
(public static member constant)
upper
[static]
大文字分類を識別する mask の値
(public static member constant)
lower
[static]
小文字分類を識別する mask の値
(public static member constant)
alpha
[static]
英字分類を識別する mask の値
(public static member constant)
digit
[static]
数字分類を識別する mask の値
(public static member constant)
punct
[static]
句読点分類を識別する mask の値
(public static member constant)
xdigit
[static]
16進数字分類を識別する mask の値
(public static member constant)
blank
[static] (C++11)
空白文字分類を識別する mask の値
(public static member constant)
alnum
[static]
alpha | digit
(public static member constant)
graph
[static]
alnum | punct
(public static member constant)

注記

std :: ctype_byname < char > は、 <locale> の概要において明示的特殊化として誤って宣言されており、 LWG issue 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

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 16 C++98 std::ctype_byname<char>の明示的特殊化の定義で do_narrow の名前とパラメータリストが誤って指定されていた 修正済み
LWG 616 C++98 mask の定義に typename ディスアンビギュエータが欠如していた 追加済み

関連項目

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