namespace std {
template <class charT>
class ctype : public locale::facet, public ctype_base;
template <>
class ctype<char> : public locale::facet, public ctype_base;
}
概要
ctypeは、文字の分類(英字・数字・空白など)と、大文字小文字の変換、およびchar型とcharT型の相互変換を提供するロケールファセットである。C言語の<cctype>の機能をカプセル化したものである。
basic_istreamのメンバ関数は、入力の解析における文字の分類にこのファセットを使用する。
ctype<char>に対しては、char型に対するメンバ関数をインライン実装できるようにするための特殊化が提供される。この特殊化は分類テーブルを直接持ち、table()とclassic_table()を追加のメンバ関数として持つ。
メンバ関数
publicメンバ関数
| 名前 | 説明 |
|---|---|
(constructor) |
コンストラクタ |
is |
文字の分類を判定する |
scan_is |
文字列中の、指定した分類に該当する最初の文字を取得する |
scan_not |
文字列中の、指定した分類に該当しない最初の文字を取得する |
toupper |
大文字に変換する |
tolower |
小文字に変換する |
widen |
指定されたchar型の文字に該当するcharT型の文字を取得する |
narrow |
指定されたcharT型の文字に該当するchar型の文字を取得する |
静的メンバ変数
| 名前 | 説明 |
|---|---|
static locale::id id; |
このファセットを識別するためのID |
ctype<char>の特殊化にのみ存在するメンバ
| 名前 | 説明 |
|---|---|
table |
文字の分類テーブルを取得する |
classic_table |
"C"ロケールにおける文字の分類テーブルを取得する (static) |
static const std::size_t table_size; |
分類テーブルの要素数。値は処理系定義であり、256以上であることが規定されている |
protectedメンバ関数
| 名前 | 説明 |
|---|---|
(destructor) |
デストラクタ |
do_is |
文字の分類を判定する |
do_scan_is |
文字列中の、指定した分類に該当する最初の文字を取得する |
do_scan_not |
文字列中の、指定した分類に該当しない最初の文字を取得する |
do_toupper |
大文字に変換する |
do_tolower |
小文字に変換する |
do_widen |
指定されたchar型の文字に該当するcharT型の文字を取得する |
do_narrow |
指定されたcharT型の文字に該当するchar型の文字を取得する |
メンバ型
| 名前 | 説明 |
|---|---|
char_type |
文字型 charT |
例
#include <iostream>
#include <locale>
#include <string>
int main()
{
const auto& ct = std::use_facet<std::ctype<char>>(std::locale::classic());
std::cout << std::boolalpha;
// 文字の分類を判定する
std::cout << ct.is(std::ctype_base::digit, '5') << std::endl;
// 大文字へ変換する
std::string s = "abc";
ct.toupper(&s[0], &s[0] + s.size());
std::cout << s << std::endl;
}
出力
true
ABC
バージョン
言語
- C++98