名稱空間
變體
操作

std::isprint

來自 cppreference.com
< cpp‎ | string‎ | byte
在標頭檔案 <cctype> 中定義
int isprint( int ch );

檢查 ch 是否為當前安裝的 C 語言環境中定義的“可列印字元”。在預設的 "C" 語言環境中,以下字元被認為是可列印的:

  • 數字(0123456789
  • 大寫字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 小寫字母(abcdefghijklmnopqrstuvwxyz
  • 標點符號(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  • 空格(

如果 ch 的值不能表示為 unsigned char 並且不等於 EOF,則行為未定義。

目錄

[編輯] 引數

ch - 要分類的字元

[編輯] 返回值

如果字元可列印,則返回非零值;否則返回零。

[編輯] 注意

<cctype> 中所有其他函式一樣,如果引數的值既不能表示為 unsigned char 也不能等於 EOF,則 std::isprint 的行為是未定義的。為了安全地使用這些函式處理普通的 char(或 signed char),應首先將引數轉換為 unsigned char

bool my_isprint(char ch)
{
    return std::isprint(static_cast<unsigned char>(ch));
}

類似地,當迭代器值型別為 charsigned char 時,不應直接與標準演算法一起使用它們。相反,應首先將值轉換為 unsigned char

int count_prints(const std::string& s)
{
    return std::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
                         [](unsigned char c){ return std::isprint(c); } // correct
                        );
}

[編輯] 示例

#include <cctype>
#include <clocale>
#include <iostream>
 
int main()
{
    unsigned char 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

[編輯] 另請參閱

檢查字元是否被區域設定分類為可列印字元
(函式模板) [編輯]
檢查寬字元是否為可列印字元
(函式) [編輯]
C 文件 中的 isprint
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

十進位制 十六進位制 八進位制
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