最終更新日時:
が更新

履歴 編集

function
<locale>

std::ctype::table

const mask* table() const throw();  // (1) C++98
const mask* table() const noexcept; // (1) C++11

概要

文字の分類テーブルを取得する。

このメンバ関数は、ctype<char>の特殊化にのみ存在する。

戻り値

コンストラクタの第1引数が非ヌルポインタであった場合はその値、そうでない場合はclassic_table()を返す。

備考

ctype<char>のメンバ関数は、この配列を索くことで文字の分類を判定する。添字はunsigned charへキャストした文字の値である。

v >= table_sizeであるようなunsigned charの値vについて、table()[v]は配列の索引を行わずに処理系固有の値を持つものと仮定される。

#include <iostream>
#include <locale>

int main()
{
  const auto& ct = std::use_facet<std::ctype<char>>(std::locale::classic());

  const std::ctype<char>::mask* tbl = ct.table();

  if (tbl == nullptr) {
    std::cout << "no table" << std::endl;
  }
  else {
    // '5'は数字に分類される
    std::cout << std::boolalpha
              << ((tbl[static_cast<unsigned char>('5')] & std::ctype_base::digit) != 0)
              << std::endl;
  }
}

出力例

true

  • 規格上はテーブルへの有効なポインタが返るが、一部の環境ではヌルポインタが返りno tableが出力される(下記の備考を参照)

バージョン

言語

  • C++98

備考

  • macOS上のlibstdc++など、一部の環境ではtable()classic_table()がヌルポインタを返す

関連項目