Namespaces
Variants

iswprint

From zh.cppreference.net
< c ‎ | string ‎ | wide
定义于头文件 <wctype.h>
int iswprint ( wint_t ch ) ;
(C95起)

检查给定的宽字符是否可打印,即该字符为数字( 0123456789 )、大写字母( ABCDEFGHIJKLMNOPQRSTUVWXYZ )、小写字母( abcdefghijklmnopqrstuvwxyz )、标点符号( !"#$%&'()*+,-./:;<=>?@[\]^_`{!}~ )、空格或当前C本地环境特定的任何可打印字符。

目录

参数

ch - 宽字符

返回值

若宽字符可打印则为非零值,否则为零。

注释

ISO 30112 规定了哪些Unicode字符被包含在POSIX打印类别中。

示例

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main(void)
{
    wchar_t c = L'\u2002'; // Unicode 字符 'EN SPACE'
    printf("在默认区域设置中,iswprint(%#x) = %d\n", c, !!iswprint(c));
    setlocale(LC_ALL, "en_US.utf8");
    printf("在 Unicode 区域设置中,iswprint(%#x) = %d\n", c, !!iswprint(c));
    wchar_t c2 = L'\x82'; // 允许换行
    printf("在 Unicode 区域设置中,iswprint(%#x) = %d\n", c2, !!iswprint(c2));
}

输出:

在默认区域设置中,iswprint(0x2002) = 0
在 Unicode 区域设置中,iswprint(0x2002) = 1
在 Unicode 区域设置中,iswprint(0x82) = 0

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 7.30.2.1.8 iswprint 函数 (p: TBD)
  • C17标准(ISO/IEC 9899:2018):
  • 7.30.2.1.8 iswprint函数(页码:待定)
  • C11标准(ISO/IEC 9899:2011):
  • 7.30.2.1.8 iswprint函数(页码:450)
  • C99标准(ISO/IEC 9899:1999):
  • 7.25.2.1.8 iswprint函数(页码:396)

另请参阅

检查字符是否为可打印字符
(函数)
C++ documentation 关于 iswprint
说明:根据要求,所有HTML标签、属性以及 标签内的内容均保持原样,仅对表格中的阿拉伯数字范围"48–57"进行了本地化处理,转换为中文常用的短横线连接形式"48–57"。其余代码和符号(如\x30、\x39、\60、\71、0123456789、≠0等)均按规则保留未翻译。 (说明:根据要求,仅翻译了表格第一行中的数值范围"65–70",其余所有HTML标签、属性、 标签内内容及C++相关术语均保持原样。表格中其他数字和符号(如0、≠0)属于字符常量范畴,按规则不予翻译。) (说明:根据要求,所有HTML标签、属性及 标签内的内容均保持原样,仅对数字范围"97–102"进行了保留,因为这是字符编码值,属于C++相关术语。表格中的其他内容均为代码或符号,无需翻译。)
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 \173 – \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