std::ctype
提供: cppreference.com
ヘッダ <locale> で定義
|
||
template< class CharT > class ctype; |
||
クラス ctype は文字の分類の機能をカプセル化します。 std::basic_istream<charT> を通して行われるすべてのストリーム入力操作は、入力のトークン化のためにホワイトスペース文字を識別するためにストリームに設定されているロケールの std::ctype<charT> を使用します。 ストリーム出力操作は出力の前にナロー文字引数に std::ctype<charT>::widen() を適用します。
2つのスタンドアロンな (ロケール非依存な) 特殊化が標準ライブラリによって提供されます。
ヘッダ
<locale> で定義 | |
std::ctype<char> | 最小限の "C" ロケールの分類に相当するナロー文字の分類を提供します。 この特殊化は文字分類のためにテーブルルックアップを使用します。 |
std::ctype<wchar_t> | ネイティブ文字集合に適したワイド文字の分類を提供します |
さらに、 C++ のプログラムによって構築されたすべてのロケールオブジェクトは、これらの特殊化の独自の (ロケール固有の) バージョンを実装します。
目次 |
[編集] メンバ型
メンバ型 | 定義 |
char_type
|
CharT
|
[編集] メンバ関数
新しい ctype ファセットを構築します (パブリックメンバ関数) | |
ctype ファセットを破棄します (プロテクテッドメンバ関数) | |
do_is を呼びます (パブリックメンバ関数) | |
do_scan_is を呼びます (パブリックメンバ関数) | |
do_scan_not を呼びます (パブリックメンバ関数) | |
do_toupper を呼びます (パブリックメンバ関数) | |
do_tolower を呼びます (パブリックメンバ関数) | |
do_widen を呼びます (パブリックメンバ関数) | |
do_narrow を呼びます (パブリックメンバ関数) |
[編集] メンバオブジェクト
static std::locale::id id |
ロケールの id (パブリックメンバオブジェクト) |
[編集] プロテクテッドメンバ関数
[仮想] |
文字を分類します (仮想プロテクテッドメンバ関数) |
[仮想] |
指定された分類に分類される文字シーケンス内の最初の文字を探します (仮想プロテクテッドメンバ関数) |
[仮想] |
指定された分類に分類されないシーケンス内の最初の文字を探します (仮想プロテクテッドメンバ関数) |
[仮想] |
文字を大文字に変換します (仮想プロテクテッドメンバ関数) |
[仮想] |
文字を小文字に変換します (仮想プロテクテッドメンバ関数) |
[仮想] |
文字を char から charT に変換します (仮想プロテクテッドメンバ関数) |
[仮想] |
文字を charT から char に変換します (仮想プロテクテッドメンバ関数) |
std::ctype_base から継承
メンバ型
型 | 定義 |
mask
|
未規定なビットマスク型 (列挙、整数型、またはビット集合) |
メンバ定数
space [静的] |
ホワイトスペース文字の分類を表す mask の値 (パブリック静的メンバ定数) |
print [静的] |
印刷可能な文字の分類を表す mask の値 (パブリック静的メンバ定数) |
cntrl [静的] |
制御文字の分類を表す mask の値 (パブリック静的メンバ定数) |
upper [静的] |
大文字の分類を表す mask の値 (パブリック静的メンバ定数) |
lower [静的] |
小文字の分類を表す mask の値 (パブリック静的メンバ定数) |
alpha [静的] |
アルファベット文字の分類を表す mask の値 (パブリック静的メンバ定数) |
digit [静的] |
数字の分類を表す mask の値 (パブリック静的メンバ定数) |
punct [静的] |
句読点文字の分類を表す mask の値 (パブリック静的メンバ定数) |
xdigit [静的] |
16進数字の分類を表す mask の値 (パブリック静的メンバ定数) |
blank [静的] (C++11) |
ブランク文字の分類を表す mask の値 (パブリック静的メンバ定数) |
alnum [静的] |
alpha | digit (パブリック静的メンバ定数) |
graph [静的] |
alnum | punct (パブリック静的メンバ定数) |
[編集] 例
以下の例は CSV ファイルをトークン化するために ctype<char> 以外の ctype の変更をデモンストレーションします。
Run this code
#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 parent 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
[編集] 関連項目
std::ctype の char 型に対する特殊化 (クラステンプレートの特殊化) | |
文字分類カテゴリを定義します (クラステンプレート) | |
名前付きロケールに対する ctype ファセットを作成します (クラステンプレート) |