std::iscntrl
提供: cppreference.com
ヘッダ <cctype> で定義 | ||
int iscntrl(int ch ); | ||
現在設定されている C のロケールによる分類において、指定された文字が制御文字かどうか調べます。 デフォルトの "C" ロケールでは、制御文字はコード 0x00-0x1F
および 0x7F
の文字です。
ch
の値が unsignedchar で表現できず、 EOF とも等しくない場合、動作は未定義です。
目次 |
[編集]引数
ch | - | 分類する文字 |
[編集]戻り値
文字が制御文字であれば非ゼロの値、そうでなければゼロ。
[編集]ノート
<cctype> の他のすべての関数と同様に、引数の値が unsignedchar で表現できず、 EOF
とも等しくない場合、 std::iscntrl
の動作は未定義です。 プレーンな char (または signedchar) でこれらの関数を安全に使用するためには、まず引数を unsignedchar に変換するべきです。
bool my_iscntrl(char ch){return std::iscntrl(static_cast<unsignedchar>(ch));}
同様に、イテレータの値型が char または signedchar のとき、標準のアルゴリズムで直接これらを使用するべきではありません。 代わりに、まず値を unsignedchar に変換してください。
int count_cntrls(conststd::string& s){returnstd::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::iscntrl) // wrong// [](int c){ return std::iscntrl(c); } // wrong// [](char c){ return std::iscntrl(c); } // wrong[](unsignedchar c){return std::iscntrl(c);}// correct);}
[編集]例
Run this code
#include <iostream>#include <cctype>#include <clocale> int main(){unsignedchar c ='\x94';// the control code CCH in ISO-8859-1 std::cout<<"iscntrl(\'\\x94\', default C locale) returned "<<std::boolalpha<<(bool)std::iscntrl(c)<<'\n'; std::setlocale(LC_ALL, "en_GB.iso88591");std::cout<<"iscntrl(\'\\x94\', ISO-8859-1 locale) returned "<<std::boolalpha<<(bool)std::iscntrl(c)<<'\n'; }
出力:
iscntrl('\x94', default C locale) returned false iscntrl('\x94', ISO-8859-1 locale) returned true
[編集]関連項目
指定されたロケールにおいて文字が制御文字に分類されるかどうか調べます (関数テンプレート) | |
ワイド文字が制御文字かどうか調べます (関数) | |
iscntrl の C言語リファレンス |
ASCII値 | 文字 | iscntrl | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10進 | 16進 | 8進 | |||||||||||||
0–8 | \x0 –\x8 | \0 –\10 | 制御文字 (NUL など) | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
9 | \x9 | \11 | タブ (\t ) | ≠0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
10–13 | \xA –\xD | \12 –\15 | ホワイトスペース (\n , \v , \f , \r ) | ≠0 | 0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
14–31 | \xE –\x1F | \16 –\37 | 制御文字 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
32 | \x20 | \40 | 空白 | 0 | ≠0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
33–47 | \x21 –\x2F | \41 –\57 | !"#$%&'()*+,-./ | 0 | ≠0 | 0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 |
48–57 | \x30 –\x39 | \60 –\71 | 0123456789 | 0 | ≠0 | 0 | 0 | ≠0 | 0 | ≠0 | 0 | 0 | 0 | ≠0 | ≠0 |
58–64 | \x3A –\x40 | \72 –\100 | :;<=>?@ | 0 | ≠0 | 0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 |
65–70 | \x41 –\x46 | \101 –\106 | ABCDEF | 0 | ≠0 | 0 | 0 | ≠0 | 0 | ≠0 | ≠0 | ≠0 | 0 | 0 | ≠0 |
71–90 | \x47 –\x5A | \107 –\132 | GHIJKLMNOP QRSTUVWXYZ | 0 | ≠0 | 0 | 0 | ≠0 | 0 | ≠0 | ≠0 | ≠0 | 0 | 0 | 0 |
91–96 | \x5B –\x60 | \133 –\140 | [\]^_` | 0 | ≠0 | 0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 |
97–102 | \x61 –\x66 | \141 –\146 | abcdef | 0 | ≠0 | 0 | 0 | ≠0 | 0 | ≠0 | ≠0 | 0 | ≠0 | 0 | ≠0 |
103–122 | \x67 –\x7A | \147 –\172 | ghijklmnop qrstuvwxyz | 0 | ≠0 | 0 | 0 | ≠0 | 0 | ≠0 | ≠0 | 0 | ≠0 | 0 | 0 |
123–126 | \x7B –\x7E | \172 –\176 | {|}~ | 0 | ≠0 | 0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 |
127 | \x7F | \177 | 削除文字 (DEL ) | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |