std::ctype
From cppreference.com
| ヘッダー <locale> で定義 |
||
| template< class CharT > class ctype; |
||
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] |
ファセットの識別子 |
[編集] メンバ関数
新しい ctype ファセットを構築します。(public member function) | |
ctype ファセットを破棄します。(protected メンバ関数) | |
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) |
[編集] protectedメンバ関数
| [virtual] |
文字または文字シーケンスを分類します (virtual protected member function) |
| [virtual] |
指定された分類に準拠するシーケンス内の最初の文字を検索します。 (virtual protected member function) |
| [virtual] |
指定された分類に失敗するシーケンス内の最初の文字を検索します (virtual protected member function) |
| [virtual] |
文字または文字を大文字に変換します。 (virtual protected member function) |
| [virtual] |
文字または文字を小文字に変換します。 (virtual protected member function) |
| [virtual] |
charからCharTへ文字または文字を変換します。(virtual protected member function) |
| [virtual] |
CharTからcharへ文字または文字を変換します。(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 (公開静的メンバ定数) |
[編集] 例
以下の例は、CSV ファイルをトークン化するために ctype<char> 以外の ctype を変更する方法を示しています。
このコードを実行
#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 を表します。 (クラステンプレート) |