std:: ctype <char>
|
ヘッダーで定義
<locale>
|
||
|
template
<>
class ctype < char > ; |
||
この std::ctype の特殊化は、型 char の文字分類機能をカプセル化します。仮想関数を使用する汎用の std::ctype とは異なり、この特殊化は文字を分類するためにテーブル参照を使用します(一般的に高速です)。
基底クラス
std::ctype
<
char
>
は、最小限の「C」ロケールと同等の文字分類を実装します。分類ルールは、非デフォルトの分類テーブル引数で構築された場合、
std::
ctype_byname
<
char
>
として構築された場合、またはユーザー定義の派生ファセットとして構築された場合に、拡張または変更できます。すべての
std::istream
の書式化入力関数は、入力解析中の文字分類に
std::ctype
<
char
>
を使用することが要求されています。
継承図
目次 |
ネスト型
| 型 | 定義 |
char_type
|
char |
データメンバ
| メンバー | 説明 |
std::locale::id
id
[static]
|
ファセット の識別子 |
const
std::
size_t
table_size
[static]
|
分類テーブルのサイズ(少なくとも256) |
メンバー関数
|
新しい
ctype
<
char
>
ファセットを構築する
(public member function) |
|
|
ctype
<
char
>
ファセットを破棄する
(protected member function) |
|
|
文字分類テーブルを取得する
(public member function) |
|
|
[static]
|
"C"ロケールの文字分類テーブルを取得する
(public static member function) |
|
文字または文字シーケンスを分類テーブルを使用して分類する
(public member function) |
|
|
シーケンス内で指定された分類に適合する最初の文字を、分類テーブルを使用して検索する
(public member function) |
|
|
シーケンス内で指定された分類に失敗する最初の文字を、分類テーブルを使用して検索する
(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
を呼び出す
(
std::ctype<CharT>
のpublic member function)
|
プロテクテッドメンバー関数
|
[virtual]
|
文字または文字列を大文字に変換する
(
std::ctype<CharT>
の仮想保護メンバー関数)
|
|
[virtual]
|
文字または文字列を小文字に変換する
(
std::ctype<CharT>
の仮想保護メンバー関数)
|
|
[virtual]
|
文字または文字列を
char
から
CharT
に変換する
(
std::ctype<CharT>
の仮想保護メンバー関数)
|
|
[virtual]
|
文字または文字列を
CharT
から
char
に変換する
(
std::ctype<CharT>
の仮想保護メンバー関数)
|
std:: ctype_base から継承
ネスト型
| 型 | 定義 |
mask
|
未指定の BitmaskType 型(列挙型、整数型、またはビットセット) |
メンバ定数
|
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
(公開静的メンバ定数) |
例
以下の例は、カンマ区切り値をトークン化するための ctype < char > の変更を示しています:
#include <cstddef> #include <iostream> #include <locale> #include <sstream> #include <vector> // This ctype facet classifies commas and endlines as whitespace struct csv_whitespace : std::ctype<char> { static const mask* make_table() { // make a copy of the "C" locale table static std::vector<mask> v(classic_table(), classic_table() + table_size); v[','] |= space; // comma will be classified as whitespace v[' '] &= ~space; // space will not be classified as whitespace return &v[0]; { csv_whitespace(std::size_t refs = 0) : ctype(make_table(), false, refs) {} }; int main() { std::string in = "Column 1,Column 2,Column 3\n123,456,789"; std::string token; std::cout << "Default locale:\n"; std::istringstream s1(in); while (s1 >> token) std::cout << " " << token << '\n'; std::cout << "Locale with modified ctype:\n"; std::istringstream s2(in); s2.imbue(std::locale(s2.getloc(), new csv_whitespace)); while (s2 >> token) std::cout << " " << token << '\n'; }
出力:
Default locale: Column 1,Column 2,Column 3 123,456,789 Locale with modified ctype: Column 1 Column 2 Column 3 123 456 789
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 695 | C++98 |
table()
および
classic_table()
はprotectedメンバ関数であった
|
それらをpublicに変更 |
関連項目
|
文字分類テーブルを定義する
(クラステンプレート) |
|
|
文字分類カテゴリを定義する
(クラス) |
|
|
名前付きロケールに対するシステム提供の
std::ctype
を表す
(クラステンプレート) |