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

| ヘッダ <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 ファセットを作成します (クラステンプレート) |