2

プロジェクトを Lua から C++ に翻訳しています。Lua バージョンでは、Lua の正規表現を使用しますが、目的が非常に単純であるため、C++ では文字をいくつかの Ascii コードと比較するだけで実行できます。

ただし、そのためには、各文字クラスが一致する正確な ASCII コードが必要です。

例として、 は%sすべてのスペース文字に一致しますが、これらの文字は正確には何ですか? すべての Lua 文字クラスについて知る必要があります。

4

1 に答える 1

2

Luaのソースを見てみましょう:

case 'a' : res = isalpha(c); break;
case 'c' : res = iscntrl(c); break;
case 'd' : res = isdigit(c); break;
case 'g' : res = isgraph(c); break;
case 'l' : res = islower(c); break;
case 'p' : res = ispunct(c); break;
case 's' : res = isspace(c); break;
case 'u' : res = isupper(c); break;
case 'w' : res = isalnum(c); break;
case 'x' : res = isxdigit(c); break;
case 'z' : res = (c == 0); break;  /* deprecated option */

C++<cctype> (ctype.h)にも同様のメソッドがあることがわかります。

isalnum     Check if character is alphanumeric (function )
isalpha     Check if character is alphabetic (function )
isblank     Check if character is blank (function )
iscntrl     Check if character is a control character (function )
isdigit     Check if character is decimal digit (function )
isgraph     Check if character has graphical representation (function )
islower     Check if character is lowercase letter (function )
isprint     Check if character is printable (function )
ispunct     Check if character is a punctuation character (function )
isspace     Check if character is a white-space (function )
isupper     Check if character is uppercase letter (function )
isxdigit    Check if character is hexadecimal digit (function )

そのページには、対応する ASCII 値の範囲もあります。

于 2016-09-12T09:04:48.827 に答える