[C、C ++] ctype.hとcctypeのisnumber()関数とisdigit()関数の違い



Difference Between Isnumber Function



Mac OSXのmanページ ctype関数のisnumber()関数とisdigit()関数の違いは、次のように説明されます。

isnumber()関数はisdigit()と同様に動作しますが、認識される場合があります 現在のロケール設定に応じて、追加の文字。



つまり、isnumber()関数はisdigit()に似ていますが、isnumber()は現在のロケールに応じて他の文字を認識する場合があります〜

isnumber()関数は、XCodeまたはCLion(Macバージョン)のctype.h(またはcctype)にあります。ただし、公式のC ++ドキュメントは見つかりません。これは、isnumber()がC / C ++の公式ライブラリ関数ではないためです。使いやすいと思われるのは、AppleのMac OS C ++専用関数です(これらの関数には、isnumberだけでなく多くの機能があります)。見ることができます Mac OSXのマニュアルページのCtype関数ページ isnumber()関数を見つける〜マニュアルには、isnumber()がC90標準に含まれていないことも記載されています。



これらの関数は、digittoint()、isascii()、ishexnumber()、 isideogram()、isnumber()、isphonogram()、isrune()、isspecial()、 toascii()、ISO / IEC 9899:1990(ISO C90 ')に準拠。

Linux環境でisnumber()関数を使用すると、g ++をコンパイルできないことがわかります。

g++ a.cpp a.cpp: In function 'int main()': a.cpp:20:17: error: 'isnumber' was not declared in this scope if (isnumber(c)) { ^

Clangではコンパイルできません:



clang++ a.cpp --std=c++11 a.cpp:20:7: error: use of undeclared identifier 'isnumber' if (isnumber(c)) { ^

したがって、isnumber()は標準のC / C ++ライブラリ関数ではありません。ブラシアルゴリズムの場合は使用しないでください〜