std::isprint
提供: cppreference.com
ヘッダ <cctype> で定義 | ||
int isprint(int ch ); | ||
現在設定されている C のロケールによる分類において、指定された文字が印刷可能かどうか調べます。 デフォルトの "C" ロケールでは、以下の文字が印刷可能です。
- 数字 (
0123456789
) - 大文字 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
) - 小文字 (
abcdefghijklmnopqrstuvwxyz
) - 句読点 (
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
) - 空白 (
)
ch
の値が unsignedchar で表現できず、 EOF とも等しくない場合、動作は未定義です。
目次 |
[編集]引数
ch | - | 分類する文字 |
[編集]戻り値
文字が印刷可能であれば非ゼロの値、そうでなければゼロ。
[編集]ノート
<cctype> の他のすべての関数と同様に、引数の値が unsignedchar で表現できず、 EOF
とも等しくない場合、 std::isprint
の動作は未定義です。 プレーンな char (または signedchar) でこれらの関数を安全に使用するためには、まず引数を unsignedchar に変換するべきです。
bool my_isprint(char ch){return std::isprint(static_cast<unsignedchar>(ch));}
同様に、イテレータの値型が char または signedchar のとき、標準のアルゴリズムで直接これらを使用するべきではありません。 代わりに、まず値を unsignedchar に変換してください。
int count_prints(conststd::string& s){returnstd::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::isprint) // wrong// [](int c){ return std::isprint(c); } // wrong// [](char c){ return std::isprint(c); } // wrong[](unsignedchar c){return std::isprint(c);}// correct);}
[編集]例
Run this code
#include <iostream>#include <cctype>#include <clocale> int main(){unsignedchar c ='\xa0';// the non-breaking space in ISO-8859-1 std::cout<<"isprint(\'\\xa0\', default C locale) returned "<<std::boolalpha<<(bool)std::isprint(c)<<'\n'; std::setlocale(LC_ALL, "en_GB.iso88591");std::cout<<"isprint(\'\\xa0\', ISO-8859-1 locale) returned "<<std::boolalpha<<(bool)std::isprint(c)<<'\n';}
出力:
isprint('\xa0', default C locale) returned false isprint('\xa0', ISO-8859-1 locale) returned true
[編集]関連項目
指定されたロケールにおいて文字が印刷文字に分類されるかどうか調べます (関数テンプレート) | |
ワイド文字が印刷文字かどうか調べます (関数) | |
isprint の C言語リファレンス |
ASCII値 | 文字 | isprint | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |