#include <ctypeutil.hpp>
Public 型 | |
| enum | CharacterClassDef { CharClass_CNTRL = (1 << 0), CharClass_SPACE = (1 << 1), CharClass_BLANK = (1 << 2), CharClass_PRINT = (1 << 3), CharClass_GRAPH = (1 << 4), CharClass_PUNCT = (1 << 5), CharClass_DIGIT = (1 << 6), CharClass_UPPER = (1 << 7), CharClass_LOWER = (1 << 8), CharClass_ALPHA = (CharClass_UPPER + CharClass_LOWER), CharClass_ALNUM = (CharClass_DIGIT + CharClass_ALPHA), CharClass_KANA = (1 << 9), CharClass_SJIS1 = (1 << 10), CharClass_SJIS2 = (1 << 11), CharClass_SJIS2_PROPER = (1 << 12), CharClass_EUC = (1 << 13) } |
| 文字種定義 [詳細] | |
| enum | CharClass_ShortName { _CC_CTL = CharClass_CNTRL, _CC_SPC = CharClass_SPACE + CharClass_CNTRL, _CC_TAB = CharClass_SPACE + CharClass_BLANK + CharClass_CNTRL, _CC_WSP = CharClass_SPACE + CharClass_BLANK + CharClass_PRINT, _CC_PUN = CharClass_PUNCT + CharClass_PRINT + CharClass_GRAPH, _CC_PN2 = _CC_PUN + CharClass_SJIS2, _CC_DIG = CharClass_DIGIT + CharClass_PRINT + CharClass_GRAPH, _CC_UP2 = CharClass_UPPER + CharClass_PRINT + CharClass_GRAPH + CharClass_SJIS2, _CC_LO2 = CharClass_LOWER + CharClass_PRINT + CharClass_GRAPH + CharClass_SJIS2, _CC_SKN = CharClass_KANA + CharClass_SJIS2, _CC_SKE = _CC_SKN + CharClass_EUC, _CC_S2P = CharClass_SJIS2 + CharClass_SJIS2_PROPER, _CC_SJP = CharClass_SJIS1 + _CC_S2P, _CC_SJE = _CC_SJP + CharClass_EUC, _CC_EUC = CharClass_EUC } |
| 文字種の短縮名を定義 [詳細] | |
Static Public メソッド | |
| static bool | is8bitChar (int ch) |
| 8ビット文字か (0 〜 255 の範囲か) | |
| static int | isBlank (int ch) |
| 空白文字か (ブランクとタブ) | |
| static int | isCntrl (int ch) |
| 制御文字か | |
| static int | isGraph (int ch) |
| 図形文字か | |
| static int | isPrint (int ch) |
| 印字可能文字か | |
| static int | isPunct (int ch) |
| 区切り文字か | |
| static int | isSpace (int ch) |
| スペース文字か (改行等を含む) | |
| static int | isAlnum (int ch) |
| 英数字か | |
| static int | isAlpha (int ch) |
| 英文字か | |
| static int | isDigit (int ch) |
| 数字か | |
| static int | isLower (int ch) |
| 英小文字か | |
| static int | isUpper (int ch) |
| 英大文字か | |
| static int | isKana (int ch) |
| 半角カナ文字か | |
| static int | isSJIS1 (int ch) |
| sjis 文字の第1バイト目か | |
| static int | isSJIS2 (int ch) |
| sjis 文字の第2バイト目か | |
| static int | isProperSJIS2 (int ch) |
| sjis 文字の第1バイトではないことが保証されているときに、 第2バイト目であることが確実にわかる文字 | |
| static int | isWordCharSJIS (int ch) |
| sjis 文字の第1バイト目または英数字か | |
| static int | isEUC1 (int ch) |
| euc 文字の第1バイト目か | |
| static int | isEUC2 (int ch) |
| euc 文字の第2バイト目か | |
| static int | isProperEUC2 (int ch) |
| euc 文字の第1バイトではないことが保証されているときに、 第2バイト目であることが確実にわかる文字 | |
| static int | isWordCharEUC (int ch) |
| euc 文字の第1バイト目または英数字か | |
| static int | toUpper (int x) |
| 英大文字に変換 | |
| static int | toLower (int x) |
| 英小文字に変換 | |
Static Public 変数 | |
| static unsigned short | CharClassTable [] |
| 英数字以外の文字種 | |
std::isalpah() などは、呼び出されるたびに、毎回、オブジェクトを生成しているらしく、 非常に遅い。使うべきではない。 (参考: http://www.fides.dti.ne.jp/~oka-t/cpplab-ctype.html)
当クラスは、std::isalpha() などの高速な代替関数を提供する。
テンプレート引数の LOCALE は、いまのところダミー。
0 を指定して特殊化した Ctype_Utilities<0> を使う。
これは、 langedge::CtypeUtil と typedef されている。
使用例:
bool myIsAlpha( int ch ) {
return langedge::CtypeUtil::isAlpha( ch );
}当クラステンプレートは、static 変数として文字種テーブル CharClassTable[] の定義を含んでいるが、 テンプレートにしておくと、複数のファイルからインクルードされたとしても、 プログラム中で1か所にまとめられることが保証される。
|
|||||
|
文字種定義
|
|
|||||
|
文字種の短縮名を定義
|
|
||||||||||
|
8ビット文字か (0 〜 255 の範囲か)
|
|
||||||||||
|
空白文字か (ブランクとタブ)
|
|
||||||||||
|
制御文字か
|
|
||||||||||
|
図形文字か
|
|
||||||||||
|
印字可能文字か
|
|
||||||||||
|
区切り文字か
|
|
||||||||||
|
スペース文字か (改行等を含む)
|
|
||||||||||
|
英数字か
|
|
||||||||||
|
英文字か
|
|
||||||||||
|
数字か
|
|
||||||||||
|
英小文字か
|
|
||||||||||
|
英大文字か
|
|
||||||||||
|
半角カナ文字か
|
|
||||||||||
|
sjis 文字の第1バイト目か
|
|
||||||||||
|
sjis 文字の第2バイト目か
|
|
||||||||||
|
sjis 文字の第1バイトではないことが保証されているときに、 第2バイト目であることが確実にわかる文字
|
|
||||||||||
|
sjis 文字の第1バイト目または英数字か
|
|
||||||||||
|
euc 文字の第1バイト目か
|
|
||||||||||
|
euc 文字の第2バイト目か
|
|
||||||||||
|
euc 文字の第1バイトではないことが保証されているときに、 第2バイト目であることが確実にわかる文字
|
|
||||||||||
|
euc 文字の第1バイト目または英数字か
|
|
||||||||||
|
英大文字に変換
|
|
||||||||||
|
英小文字に変換
|
|
|||||
|
英数字以外の文字種
|
1.4.2