名前空間
変種
操作

std::ctype

From cppreference.com
< cpp‎ | locale
 
 
 
 
 
ヘッダー <locale> で定義
template< class CharT >
class ctype;

ctype クラスは文字分類機能をカプセル化します。std::basic_istream<CharT> を介して実行されるすべてのストリーム入力操作は、ストリームに埋め込まれたロケールの std::ctype<CharT> を使用して、入力トークン化のための空白文字を識別します。ストリーム出力操作は、出力前のナロー文字引数に std::ctype<CharT>::widen() を適用します。

cpp/locale/ctype basecpp/locale/locale/facetstd-ctype-inheritance.svg

継承図

目次

[編集] 特殊化

標準ライブラリは、以下の特殊化を提供することが保証されています(これらは あらゆるロケールオブジェクトによって実装される必要があります)。

ヘッダー <locale> で定義
std::ctype<char> 最小限の「C」ロケールの分類のナロー文字等価物を提供します。この特殊化は、文字分類のためにテーブル検索を使用します。
std::ctype<wchar_t> ネイティブ文字セットに適したワイド文字分類を提供します。

[編集] ネストされた型

定義
char_type CharT

[編集] データメンバ

メンバ 説明
std::locale::id id [static] ファセットの識別子

[編集] メンバ関数

新しい ctype ファセットを構築します。
(public member function)
ctype ファセットを破棄します。
(protected メンバ関数)
do_is を呼び出します。
(public member function) [編集]
do_scan_is を呼び出します。
(public member function) [編集]
do_scan_not を呼び出します。
(public member function) [編集]
do_toupperを呼び出します。
(public member function) [編集]
do_tolowerを呼び出します。
(public member function) [編集]
do_widenを呼び出します。
(public member function) [編集]
do_narrowを呼び出します。
(public member function) [編集]

[編集] protectedメンバ関数

[virtual]
文字または文字シーケンスを分類します
(virtual protected member function) [編集]
[virtual]
指定された分類に準拠するシーケンス内の最初の文字を検索します。
(virtual protected member function) [編集]
[virtual]
指定された分類に失敗するシーケンス内の最初の文字を検索します
(virtual protected member function) [編集]
[virtual]
文字または文字を大文字に変換します。
(virtual protected member function) [編集]
[virtual]
文字または文字を小文字に変換します。
(virtual protected member function) [編集]
[virtual]
charからCharTへ文字または文字を変換します。
(virtual protected member function) [編集]
[virtual]
CharTからcharへ文字または文字を変換します。
(virtual protected member function) [編集]

std::ctype_baseから継承

ネストされた型

定義
mask 未指定のBitmaskType型(列挙型、整数型、またはビットセット)

メンバ定数

スペース
[static]
空白文字の分類を識別するmaskの値
(公開静的メンバ定数)
print
[static]
印刷可能文字の分類を識別するmaskの値
(公開静的メンバ定数)
cntrl
[static]
制御文字の分類を識別するmaskの値
(公開静的メンバ定数)
upper
[static]
大文字の分類を識別するmaskの値
(公開静的メンバ定数)
lower
[static]
小文字の分類を識別するmaskの値
(公開静的メンバ定数)
alpha
[static]
アルファベット文字の分類を識別するmaskの値
(公開静的メンバ定数)
digit
[static]
数字文字の分類を識別するmaskの値
(公開静的メンバ定数)
punct
[static]
句読点文字の分類を識別するmaskの値
(公開静的メンバ定数)
xdigit
[static]
16進数数字の分類を識別するmaskの値
(公開静的メンバ定数)
blank
[static] (C++11)
空白文字の分類を識別するmaskの値
(公開静的メンバ定数)
alnum
[static]
alpha | digit
(公開静的メンバ定数)
graph
[static]
alnum | punct
(公開静的メンバ定数)

[編集]

以下の例は、CSV ファイルをトークン化するために ctype<char> 以外の ctype を変更する方法を示しています。

#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 base 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

[編集] 関連項目

char に対する std::ctype の特殊化。
(クラステンプレートの特殊化) [編集]
文字分類カテゴリを定義する
(クラス) [編集]
名前付きロケールのシステム供給の std::ctype を表します。
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)