std::ctype<char>
提供: cppreference.com
<tbody>
</tbody>

| ヘッダ <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::ctype<char> ファセットを構築します (パブリックメンバ関数) | |
std::ctype<char> ファセットを破棄します (プロテクテッドメンバ関数) | |
| 文字分類テーブルを取得します (パブリックメンバ関数) | |
[静的] |
"C" ロケールの文字分類テーブルを取得します (パブリック静的メンバ関数) |
| 分類テーブルを用いて、文字を分類します (パブリックメンバ関数) | |
| 分類テーブルを用いて、指定された分類に分類されるシーケンス内の最初の文字を探します (パブリックメンバ関数) | |
| 分類テーブルを用いて、指定された分類に分類されないシーケンス内の最初の文字を探します (パブリックメンバ関数) | |
do_toupper を呼びます ( std::ctype<CharT>のパブリックメンバ関数)
| |
do_tolower を呼びます ( std::ctype<CharT>のパブリックメンバ関数)
| |
do_widen を呼びます ( std::ctype<CharT>のパブリックメンバ関数)
| |
do_narrow を呼びます ( std::ctype<CharT>のパブリックメンバ関数)
|
プロテクテッドメンバ関数
[仮想] |
文字を大文字に変換します ( std::ctype<CharT>の仮想プロテクテッドメンバ関数)
|
[仮想] |
文字を小文字に変換します ( std::ctype<CharT>の仮想プロテクテッドメンバ関数)
|
[仮想] |
文字を char から charT に変換します ( std::ctype<CharT>の仮想プロテクテッドメンバ関数)
|
[仮想] |
文字を charT から char に変換します ( std::ctype<CharT>の仮想プロテクテッドメンバ関数)
|
メンバオブジェクト
static std::locale::id id [静的] |
ロケールの id (パブリック静的メンバ定数) |
static const std::size_t table_size [静的] |
分類テーブルのサイズ、少なくとも256 (パブリック静的メンバ定数) |
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 (パブリック静的メンバ定数) |
例
以下の例はコンマ区切りの値をトークン化するための ctype<char> の変更をデモンストレーションします。
Run this code
#include <iostream>
#include <vector>
#include <locale>
#include <sstream>
// 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
関連項目
| 文字分類テーブルを定義します (クラステンプレート) | |
| 文字分類カテゴリを定義します (クラステンプレート) | |
| 名前付きロケールに対する ctype ファセットを作成します (クラステンプレート) |