最終更新日時:
が更新

履歴 編集

class template
<locale>

std::ctype

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

関連項目