名前空間
変種
操作

std::isprint

提供: cppreference.com
< cpp‎ | string‎ | byte
ヘッダ <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);}

[編集]

#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


[編集]関連項目

指定されたロケールにおいて文字が印刷文字に分類されるかどうか調べます
(関数テンプレート)[edit]
ワイド文字が印刷文字かどうか調べます
(関数)[edit]
ASCII値 文字

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

10進 16進 8進
0–8 \x0\x8\0\10 制御文字 (NUL など) ≠000000000000
9 \x9\11 タブ (\t) ≠00≠0≠000000000
10–13 \xA\xD\12\15 ホワイトスペース (\n, \v, \f, \r) ≠00≠0000000000
14–31 \xE\x1F\16\37 制御文字 ≠000000000000
32 \x20\40 空白 0≠0≠0≠000000000
33–47 \x21\x2F\41\57!"#$%&'()*+,-./0≠000≠0≠0000000
48–57 \x30\x39\60\7101234567890≠000≠00≠0000≠0≠0
58–64 \x3A\x40\72\100:;<=>?@0≠000≠0≠0000000
65–70 \x41\x46\101\106ABCDEF0≠000≠00≠0≠0≠000≠0
71–90 \x47\x5A\107\132GHIJKLMNOP
QRSTUVWXYZ
0≠000≠00≠0≠0≠0000
91–96 \x5B\x60\133\140[\]^_`0≠000≠0≠0000000
97–102 \x61\x66\141\146abcdef0≠000≠00≠0≠00≠00≠0
103–122 \x67\x7A\147\172ghijklmnop
qrstuvwxyz
0≠000≠00≠0≠00≠000
123–126 \x7B\x7E\172\176{|}~0≠000≠0≠0000000
127 \x7F\177 削除文字 (DEL) ≠000000000000
close