std:: ctype
|
ヘッダーで定義
<locale>
|
||
|
template
<
class
CharT
>
class ctype ; |
||
Class
ctype
は文字分類機能をカプセル化します。
std::
basic_istream
<
CharT
>
を通じて行われるすべてのストリーム入力操作は、入力トークン化のための空白文字を識別するために、ストリームに組み込まれたロケールの
std::ctype<CharT>
を使用します。ストリーム出力操作は、出力前に狭い文字引数に
std::ctype<CharT>::widen()
を適用します。
継承図
目次 |
特殊化
標準ライブラリは以下の特殊化を提供することが保証されています(これらは あらゆるロケールオブジェクトで実装が必須 とされています):
|
定義済みヘッダー
<locale>
|
|
std::ctype<char>
|
最小限の「C」ロケール分類に相当するナロー文字機能を提供する。この特殊化は文字分類にテーブル参照を使用する |
| std :: ctype < wchar_t > | ネイティブ文字セットに適したワイド文字分類を提供する |
ネスト型
| 型 | 定義 |
char_type
|
CharT
|
データメンバ
| メンバー | 説明 |
std::locale::id
id
[static]
|
facet の識別子 |
メンバー関数
新しい
ctype
ファセットを構築する
(public member function) |
|
ctype
ファセットを破棄する
(protected member function) |
|
do_is
を呼び出す
(public member function) |
|
do_scan_is
を呼び出す
(public member function) |
|
do_scan_not
を呼び出す
(public member function) |
|
do_toupper
を呼び出す
(public member function) |
|
do_tolower
を呼び出す
(public member function) |
|
do_widen
を呼び出す
(public member function) |
|
do_narrow
を呼び出す
(public member function) |
プロテクテッドメンバー関数
|
[virtual]
|
文字または文字シーケンスを分類する
(仮想 protected メンバー関数) |
|
[virtual]
|
指定された分類に適合するシーケンス内の最初の文字を検索する
(仮想 protected メンバー関数) |
|
[virtual]
|
指定された分類に失敗するシーケンス内の最初の文字を検索する
(仮想 protected メンバー関数) |
|
[virtual]
|
1文字または複数文字を大文字に変換する
(仮想 protected メンバー関数) |
|
[virtual]
|
1文字または複数文字を小文字に変換する
(仮想 protected メンバー関数) |
|
[virtual]
|
1文字または複数文字を
char
から
CharT
に変換する
(仮想 protected メンバー関数) |
|
[virtual]
|
1文字または複数文字を
CharT
から
char
に変換する
(仮想 protected メンバー関数) |
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>
以外の
ctype
を変更してCSVファイルをトークン化する方法を示しています:
#include <iostream> #include <locale> #include <sstream> struct csv_whitespace : std::ctype<wchar_t> { bool do_is(mask m, char_type c) const { if ((m & space) && c == L' ') return false; // space will NOT be classified as whitespace if ((m & space) && c == L',') return true; // comma will be classified as whitespace return ctype::do_is(m, c); // leave the rest to the base class } }; int main() { std::wstring in = L"Column 1,Column 2,Column 3\n123,456,789"; std::wstring token; std::wcout << "default locale:\n"; std::wistringstream s1(in); while (s1 >> token) std::wcout << " " << token << '\n'; std::wcout << "locale with modified ctype:\n"; std::wistringstream s2(in); csv_whitespace* my_ws = new csv_whitespace; s2.imbue(std::locale(s2.getloc(), my_ws)); while (s2 >> token) std::wcout << " " << 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
関連項目
|
char
型に対する
std::ctype
の特殊化
(クラステンプレートの特殊化) |
|
|
文字分類カテゴリを定義する
(クラス) |
|
|
名前付きロケールに対するシステム提供の
std::ctype
を表す
(クラステンプレート) |