c标准库
前言
学习c语言十几年了,却从来没有完整的将c标准库看一看,我想在这一点上我是欠缺的。作为一个技术人员,无论什么时候都不能忘记自己最擅长的技能,这次借一个偶然的契机,翻一翻c标准库,希望以后自己在技术上越来越牛。
说明
c++库和c库包含相同的结构体的定义,其区别主要如下:
- 每个头文件与c语言版本具有相同的名称,但是带有“c”前缀,没有扩展文件名。例如:c语言头文件<stdio.h>的c++等价头文件为。
- 库的每个元素都在std空间中定义。
本文档的示例中,使用c风格的版本,要使用c++的版本替换成相应的头文件就好。
在c++版本实现中也有一些特定的区别:
- wchar_t, char16_t, char32_t 和 bool是c++中的基本类型,因此不会在c版本中出现,这同样适用于<iso646.h>中的宏,因为它们是c++中的关键字。
- 以下函数的声明中有与其参数常量相关的更改:strchr、strpbrk、strrchr、strstrstr、memchr。
- 定义在<cstdlib>中的atexit、exit、abort函数在c++中的行为有所增加。
- 有些函数的重载版本提供了作为参数的附加类型和相同的语义,例如cmath头文件中函数的float和long double版本,或者abs和div的long版本。
c++98包含c90标准中的库;
c++11包含c99标准中描述的c库;
2011 ISO标准的其他介绍与c++不兼容。
说明:本文主要对c99(即c++11)库进行描述。
<cassert><assert.h>
说明
该文件中定义了一组宏函数作为标准调试工具。对应的宏函数为assert。
函数
函数assert
void assert(int expression);
如果表达式为0,则会向标准错误设备写入一条消息,并调用abort,终止程序的额执行。
如果在#include<assert.h>时,已经定义了名为ndebug的宏,则禁用此宏。因此可以在调试时使用断言,但是在生产版本中通过如下行为禁用这些断言调用:
#define NDEBUG
调用示例:
#include <stdio.h> /* printf */
#include <assert.h> /* assert */
void print_number(int* myInt) {
assert (myInt!=NULL);
printf ("%d\n",*myInt);
}
int main (){
int a=10;
int * b = NULL;
int * c = NULL;
b=&a;
print_number (b);
print_number (c);
return 0;
}
<cctype>/<ctype.h>
说明
此头文件声明了一组用于分类和转换单个字符的函数。
函数
isalnum
int isalnum ( int c );
检查c是十进制数字还是大小写字母。如果为假返回0,否则返回其它值。
isalpha
int isalpha ( int c );
检查c是否为字母。为假返回0,否则返回其它值。
isblank
int isblank ( int c );
检查c是否是空白字符。为假返回0,否则返回其它值。
iscntrl
int iscntrl ( int c );
检查c是否是控制字符。为假返回0,否则返回其它值。
isdigit
int isdigit ( int c );
检查c是否是十进制字符。为假返回0,否则返回其它值。
isgraph
int isgraph ( int c );
检查c是否有图形表示法。带有图形表示法的字符是除了空白字符(比如 ’ ')以外的所有可打印的字符。为假返回0,否则返回其它值。
islower
int islower ( int c );
检查c是否是小写字母。为假返回0,否则返回其它值。
isprint
int isprint ( int c );
检查c是否是可打印字符。为假返回0,否则返回其它值。
ispunct
int ispunct ( int c );
检查c是否是标点符号。为假返回0,否则返回其它值。
isspace
int isspace ( int c );
检查c是否是空格。为假返回0,否则返回其它值。
isupper
int isupper ( int c );
检查c是否是大写字母。为假返回0,否则返回其它值。
isxdigit
int isxdigit ( int c );
检查c是否是十六进制数字。为假返回0,否则返回其它值。
tolower
int tolower ( int c );
将c转换成小写字符。
toupper
int toupper ( int c );
将c转换成大写字符。
<cerrno>/<errno.h>
该文件中主要定义了如下宏:
- errno 上次的错误号;
- 该宏可以由程序读和写。
<cfloat>/<float.h>
含了一组与浮点值相关的依赖于平台的常量。
宏 | 描述 |
---|---|
FLT_ROUNDS | 定义浮点加法的舍入模式,它可以是下列任何一个值: -1 表示无法确定 ; 0 表示趋向于零; 1表示去最近的值; 2趋向于正无穷; 3趋向于负无穷。 |
FLT_RADIX | 此宏定义了指数表示的基数。基数2表示二进制,基数10表示十进制,基数16表示十六进制。 |
FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG | 定义了FLT_RADIX基数中的位数 |
FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 | 定义了舍入后不会改变表示的十进制数字的最大值。 |
FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP | 定义了基数为FLT_RADIX时的指数的最小负整数值。 |
FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 | 定义基数为10时指数的最小负整数值。 |
FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP | 定义基数为FLT_RADIX时指数的最大整数值。 |
FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 | 定义基数为10时的指数的最大整数值。 |
FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 | 定义最大的有限浮点数。 |
FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 | 定义可表示的最小有效数字。 |
FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 | 定义最小的浮点数。 |
<ciso646>/<iso646.h>
定义运算符相关的宏。
宏 | 对应操作符 |
---|---|
and | && |
and_eq | &= |
bitand | & |
bitor | | |
compl | ~ |
not | ! |
not_eq | != |
or | || |
or_eq | |= |
xor | ^ |
xor_eq | ^= |
在c++中有相应的保留字,因此可以不需要此头文件。
<climits>/<limits.h>
该头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制各种类型的变量。即变量不能存储任何超出这些限制的值。
宏 | 描述 | 值 |
---|---|---|
CHAR_BIT | char类型中的比特数 | 8 |
SCHAR_MIN | 有符号字符的最小值 | -127 |
SCHAR_MAX | 有符号字符的最大值 | 127 |
UCHAR_MAX无符号字符的最大值 | 255 | |
CHAR_MIN | char类型的最小值 | SCHAR_MIN或者0 |
CHAR_MAX | char类型的最大值 | SCHAR_MAX或者UCHAR_MAX |
MB_LEN_MAX | 多字节字符中的最大字节数 | 1 |
SHRT_MIN | 短整型的最小值 | -32767(-2^15+1) |
SHRT_MAX | 短整型的最大值 | 32767(2^15+1) |
USHRT_MAX | 无符号短整型的最大值 | 65535(2^16-1) |
INT_MIN | int类型的最小值 | -32767(-2^15+1) |
INT_MAX | int类型的最大值 | 32767(2^15+1) |
UINT_MAX | 无符号int类型的最大值 | 65535(2^16-1) |
LONG_MIN | 长整型的最小值 | -2147483647 (-2^31+1) |
LONG_MAX | 长整型的最大值 | 2147483647 (2^31+1) |
ULONG_MAX | 无符号长整型的最大值 | 4294967295 (2^32-1) |
LLONG_MIN | long long int的最小值 | -9223372036854775807 (-2^63+1) |
LLONG_MIN | long long int的最大值 | 9223372036854775807 (2^63+1) |
ULLONG_MAX | 无符号long long int的最大值 | 18446744073709551615 (2^64-1) |
<clocale>/<locale.h>
c语言支持特定于本地化的设置。例如特定于区域性的日期格式或特定于国家的货币符号。
每个系统和特定的编译器至少要提供两种区域设置选择:
- "c"区域设置是最小区域设置。
- 系统的默认区域设置由运行应用程序的环境提供区域设置配置。
在此头文件中声明了结构提lconv以及函数setlocale和localeconv,以及配合它们使用的一些宏。
结构体lconv
此结构体保存写入数值(货币值和非货币值)的格式信息。函数localconv返回此类型的对象。
该结构体包含的成员如下:
typedef struct {
char *decimal_point;//用于非货币值的小数点字符
char *thousands_sep;//用于非货币值的千位分隔符
char *grouping;//一个表示非货币量中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组
char *int_curr_symbol;//国际货币符号使用的字符串。前三个字符是由 ISO 4217:1987 指定的,第四个字符用于分隔货币符号和货币量
char *currency_symbol;//用于货币的本地符号
char *mon_decimal_point;//用于货币值的小数点字符
char *mon_thousands_sep;//用于货币值的千位分隔符
char *mon_grouping;//一个表示货币值中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组
char *positive_sign;//用于正货币值的字符
char *negative_sign;//用于负货币值的字符
char int_frac_digits;//国际货币值中小数点后要显示的位数
char frac_digits;//货币值中小数点后要显示的位数
char p_cs_precedes;//如果等于 1,则 currency_symbol 出现在正货币值之前。如果等于 0,则 currency_symbol 出现在正货币值之后
char p_sep_by_space;//如果等于 1,则 currency_symbol 和正货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和正货币值之间不使用空格分隔
char n_cs_precedes;//如果等于 1,则 currency_symbol 出现在负货币值之前。如果等于 0,则 currency_symbol 出现在负货币值之后
char n_sep_by_space;//如果等于 1,则 currency_symbol 和负货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和负货币值之间不使用空格分隔
char p_sign_posn;//表示正货币值中正号的位置
char n_sign_posn;//表示负货币值中负号的位置
char int_p_cs_precedes;//p_cs_precedes的国际格式
char int_n_cs_precedes;//n_cs_precedes的国际格式
char int_p_sep_by_space;//p_sep_by_space的国际格式
char int_n_sep_by_space;//n_sep_by_space的国际格式
char int_p_sign_posn;//p_sign_posn的国际格式
char int_n_sign_posn;//n_sign_posn的国际格式
} lconv
函数setlocale
char* setlocale (int category, const char* locale);
设置或读取地域化的信息。
函数localeconv
struct lconv* localeconv (void);
设置或读取地域化信息,会返回一个lconv结构类型的对象。
<cmath>/<math.h>
定义了常用的数学操作相关的函数。
如下:
- cos
- sin
- tan
- acos
- asin
- atan
- atan2
- cosh
- sinh
- tanh
- acosh
- asinh
- atanh
- exp
- frexp
- ldexp
- log
- log10
- modf
- exp2
- expm1
- ilogb
- log1p
- log2
- logb
- scalbn
- scalbln
- pow
- sqrt
- cbrt
- hypot
- erf
- erfc
- tgamma
- lgamma
- ceil
- floor
- fmod
- trunc
- round
- lround
- llround
- rint
- lrint
- nearbyint
- remainder
- remquo
- copysign
- nan
- nextafter
- nexttoward
- fdim
- fmax
- fmin
- fabs
- abs
- fma
- fpclassify
- isfinite
- isinf
- isnan
- isnormal
- signbit
- isgreater
- isgreaterequal
- isless
- islessequal
- islessgreater
- isunordered
- math_errhandling
- INFINITY
- NAN
- HUGE_VAL
- HUGE_VALF
- HUGE_VALL
<csetjmp>/<setjmp.h>
定义了宏setjmp、函数longjmp以及变量类型jmp_buf,用来实现远程跳转。
jmp_buf类型
用来存储宏setjmp和longjmp之间的环境相关的信息。在调用setjmp时存储,然后在longjmp时恢复
setjmp
int setjmp (jmp_buf env);
此宏用来把当前的环境保存在变量enviroment中,以便longjmp调用时使用。
longjmp
void longjmp (jmp_buf env, int val);
该函数恢复最近一次调用setjmp宏时保存的环境,就jmp_buf参数的设置是由之前调用的额setjmp生成的。
<csignal>/<signal.h>
处理信号的c标准库。包括sig_atomic_t类型,信号处理设置函数signal,信号生成函数raise。
sig_atomic_t类型
int类型,信号处理程序中作为变量使用。它是一个对象的整数类型,该对象可以作为一个原子实体访问,即使存在异步信号时,该对象可以作为一个原子实体访问。
signal
注册信号处理函数。
raise
生成一个信号。
宏类型
类型 | 宏 | 信号 |
---|---|---|
int (信号) | SIGABRT | 程序异常终止 |
int (信号) | SIGFPE | 算术运算出错,如除数为0或者溢出 |
int (信号) | SIGILL | 非法函数映像,如非法指令 |
int (信号) | SIGINT | 中断信号,如ctrl-C |
int (信号) | SIGSEGV | 非法访问存储器,如访问不存在的内存单元 |
int (信号) | SIGTERM | 发送给本程序的终止请求信号 |
函数(handlers) | SIG_DFL | 默认的信号处理程序 |
函数(handlers) | SIG_ERR | 特殊返回值表示一个信号错误 |
函数(handlers) | SIG_IGN | 忽略信号 |
<cstdarg>/<stdarg.h>
该头文件定义了一个变量类型va_list和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。
可变参数的函数在参数列表的末尾使用省略号(…)定义。
例如:
返回类型 函数名称(参数1, ...)
要访问附加的参数通过宏va_start,va_arg,va_end来实现。
库变量va_list
适用于va_start()、va_arg()和va_end()这三个宏存储信息的类型。
宏库
宏 | 描述 |
---|---|
void va_start (va_list ap, last_arg) | 此宏初始化ap变量,与va_arg和va_end一起使用。lase_arg是最后一个传递给函数的已知的固定参数,即省略号之前的参数,此参数不应为引用类型。 |
type va_arg(va_list ap, type) | 此宏检索函数参数列表中类型为type的下一个参数。 |
void va_end(va_list ap) | 此宏允许使用va_start宏带有的可变参数的函数返回。如果在从函数返回之前没有调用va_end,则结果为未定义。 |
void va_copy (va_list dest, va_list src) | 拷贝va_list src的内容到dest |
<cstdbool>/<stdbool.h>
定义true和false的宏。
<cstddef>/<stddef.h>
该头文件定义各种变量类型和宏。
类型
类型 | 含义 |
---|---|
ptrdiff_t | 有符号整数类型,它是两个指针相减的结果 |
size_t | 无符号整数类型,它是sizeof关键字的结果 |
max_align_t | 对其类型大小 |
nullptr_t | 空指针类型 |
宏函数
类型 | 含义 |
---|---|
offset | 返回结一个构体成员的偏移量 |
宏
类型 | 含义 |
---|---|
NULL | 空指针 |
<cstdint>/<stdint.h>
此文件是类型支持库的一部分,提供定宽整数类型和部分c数值极限接口。
类型
int8_t uint8_t
int16_t uint16_t
int32_t uint32_t
int64_t uint64_t
分别为宽度恰为 8 、 16 、 32 和 64 位的有/无符号整数类型
无填充位并对负值使用补码(仅若实现支持该类型才提供)
int_least8_t uint_least8_t
int_least16_t uint_least16_t
int_least32_t uint_least32_t
int_least64_t uint_least64_t
分别为宽度至少有 8 、 16 、 32 和 64 位的最小的有/无符号整数类型
int_fast8_t uint_fast8_t
int_fast16_t uint_fast16_t
int_fast32_t uint_fast32_t
int_fast64_t uint_fast64_t
分别为宽度至少有 8 、 16 、 32 和 64 位的最快的有/无符号整数类型
intmax_t uintmax_t 最大宽度的有/无符号整数类型
intptr_t uintptr_t 足以保有指针的有/无符号整数类型
宏
对应上述类型的最大值、最小值以及特殊值。
<cstdio>/<stdio.h>
输入输出标准库。
流属性
大部分属性在使用fopen打开一个文件的时候定义,如下:
- 读写权限
- 文本/二进制
- 缓冲
- 流的方向
流标识
主要有以下三种:
- 错误标识
- 文件结束标识
- 位置标识
函数
函数 | 功能 |
---|---|
remove | 删除文件 |
rename | 重命名文件 |
tmpfile | 打开一个临时文件 |
tmpnam | 生成一个临时文件 |
fclose | 关闭文件 |
fflush | Flush流 |
fopen | 打开文件 |
freopen | 把一个新的文件名与给定的打开流相关联,同时关闭流中的旧文件 |
setbuf | 设置流的缓冲区 |
setvbuf | 定义流缓冲的函数 |
fprintf | 格式化写入流 |
fscanf | 从流读取格式化输入 |
printf | 格式化打印到stdout |
scanf | 从标准输入取 |
snprintf | 格式化打印到缓冲中 |
sprintf | 发送格式化输出到字符串 |
sscanf | 从字符串读取格式化输入 |
vfprintf | 使用参数列表发送格式化输出到流中 |
vfscanf | 从流中执行格式化输入 |
vprintf | 使用参数列表发送格式化输出到标准输出stdout |
vscanf | 字符串格式化输入函数 |
vsnprintf | 从参数列表格式化输出到buffer |
vsprintf | 从参数列表格式化输出到字符串 |
vsscanf | 从字符串格式输入到参数列表 |
fgetc | 从流中取一个字符 |
fgets | 从流中取字符串 |
fputc | 写入字符到流中 |
fputs | 写入字符串到流中 |
getc | 从流中取一个字符 |
getchar | 从标准输入取一个字符 |
gets | 从标准输入取一个字符串 |
putc | 写入字符到流中 |
putchar | 写字符到标准输出 |
puts | 写字符串到标准输出 |
ungetc | 把一个字符推入到指定的流中,以便它是下一个被读取到的字符 |
fread | 从指定的流中读取数据到所指向的数组中 |
fwrite | 写数据到指定的流中 |
fgetpos | 获取流中的当前位置 |
fseek | 设置流的文件位置给定的偏移 |
fsetpos | 设置指定位置 |
ftell | 返回给定流的当前文件位置 |
rewind | 返回文件位置为给定流的文件的开头 |
clearerr | 清除给定流的文件结束和错误标识 |
feof | 是否到文件末尾 |
ferror | 测试流的错误标识 |
perror | 打印错误消息 |
宏
宏 | 功能 |
---|---|
BUFSIZ | 缓冲尺寸 |
EOF | 文件结束 |
FILENAME_MAX | 文件名最大长度 |
FOPN_MAX | 能同时打开的文件数量 |
L_tmpnam | 字符数组可以存储的由tmpnam函数创建的临时文件名的最大长度 |
NULL | 空指针 |
TMP_MAX | tmpnam函数可生成的独特文件名的最大数量 |
类型
类型 | 描述 |
---|---|
FILE | 适合存储文件流信息的对象类型 |
fpos_t | 适合存储文件中任何位置的对象类型 |
size_t | 无符号整数类型,是sizeof关键字的结果 |
<cstdlib>/<stdlib.h>
此文件中定义了一些通用的函数,包括内存动态管理,随机数生成等等。
函数
-
字符串转换相关:
函数 功能 atof 字符串转换成double类型 atoi 字符串转换成整型 atol 字符串转换成长整型 atoll 字符串转换成长长整型 strtod 字符串转换成double类型 strtof 字符串转换成浮点型 strtol 字符串转换成长整型 strtold 字符串转换成长double型 strtoll 字符串转换成长长整型 strtoul 字符串转换成无符号长整型 strtoull 字符串转换成无符号长长整型 -
随机相关
函数 功能 rand 生成随机数 srand 初始化随机数生成器 -
动态内存管理
函数 功能 calloc 分配并且用0初始化数组 free 释放内存 malloc 分配内存 realloc 重新分配内存 -
环境相关
函数 功能 abort 中止当前进程 atexit 设置执行exit时执行的函数 at_quick_exit 设置执行quick_exit时执行的函数 exit 结束调用进程 getenv 获取环境变量 quick_exit 快速结束调用进程 system 执行系统命令 _Exit 结束调用进程 -
搜索和排序
函数 功能 bsearch 执行二分查找 qsort 数组排序 -
整型数相关
函数 功能 abs 求绝对值 div 整数除法 labs 求长整型绝对值 ldiv 求长整型除法 llabs 求长长整型绝对值 lldiv 求长长整型除法 -
多字节字符
函数 功能 mblen 求多字节字符的长度 mbtowc 将多字节序列转换成宽字符 wctomb 宽字符转换成多字节序列 -
多字节字符串
函数 功能 mbstowcs 多字节字符串转换成宽字符字符串 wcstombs 宽字符字符串转换成多字节字符串 -
宏
宏 功能 EXIT_FAILURE 错误结束码 EXIT_SUCCESS 成功结束码 MB_CUR_MAX 多字节字符的最大尺寸 NULL 空指针 RAND_MAX 能随机出来的最大值 -
类型
类型 功能 div_t div返回的结构体 ldiv_t ldiv返回的结构体 lldiv_t lldiv返回的结构体 size_t 无符号整型
<cstring>/<string.h>
该头文件中定义了一些函数来维护c语言中的字符串和数组。
函数
-
拷贝相关
函数 功能 memcpy 拷贝 memmove 用于拷贝字节,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,但复制后源内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。 strcpy 拷贝字符串 strncpy 拷贝字符串 -
级联相关
函数 功能 strcat 级联 strncat 级联 -
比较
函数 功能 memcmp 比较两块内存 strcmp 比较两个字符串 strcoll 比较两个字符串,但是结果取决于 LC_COLLATE 的位置设置 strncmp 比较两个字符串中的字符 strxfrm 根据程序当前的 -
搜索
函数 功能 memchr 搜索前n个字节中第一次出现字符c的位置 strchr 搜索字符串中第一次出现的c的位置 strcspn 检索字符串str1中连续几个字符都不包含字符串str2中的字符 strpbrk 检测str1中地一个匹配字符串str2中字符的字符,不包含空结束字符 strrchr 在参数str只想的字符串中搜索最后一次出现字符c的位置 strspn 检测字符串str1中地一个不在字符串str2中出现的字符下标 strstr 在一个字符串中查找第一次出现另一个字符串的位置 strtok 分解字符串为一组字符串,第二个参数为分割符 -
其它
函数 功能 memset 给内存块赋值 strerror 获取错误字符串的指针 strlen 获取字符串的长度 -
宏
宏 功能 NULL 空指针 -
类型
类型 描述 size_t 无符号整型
<ctgmath>/<tgmath.h>
此头文件简单的包含<cmath>和<ccomplex>
<ctime>/<time.h>
时间相关的库
函数
-
时间相关
函数 描述 clock 返回程序执行起,处理器时钟所使用的时间 difftime 返回两个time之间相差的秒数 mktime 把tm结构转换成一个依据本地时区的time_t值 time 计算当前日历时间,并把它编码成time_t格式 -
转换相关
函数 描述 asctime 把tm结构转换成字符串 ctime 把time_v的值转换成字符串 gmtime 把time_t转换成UTC时间的tm localtime 把time_t转换成本地时间的tm strftime 格式化时间为字符串 -
宏
宏 描述 CLOCKS_PER_SEC 时钟每秒的滴答数 NULL 空指针 -
类型
宏 描述 clock_t 时钟类型 size_t 无符号整型 time_t 时间类型 struct time 时间结构体
<cuchar>/<uchar.h>
此头文件用来支持UTF-16和UTF-32.
宏
宏 | 描述 |
---|---|
STD_UTF_16 | 如果定义了此值则说明char16_t有UTF-16编码 |
STD_UTF_32 | 如果定义了此值则说明char32_t有UTF-32编码 |
函数
函数 | 描述 |
---|---|
c16rtomb | 将16位字符转换成多字节序列 |
c32rtomb | 将32位字符转换成多字节序列 |
mbrtoc16 | 将多字节序列转换成16位字符 |
mbrtoc32 | 将多字节序列转换成32位字符 |
<cwchar>/<wchar.h>
此文件主要描述宽字符串相关的内容。
函数
-
输入/输出
函数 功能 fgetwc 从流中读取宽字符 fgetws 从流中读取宽字符串 fputwc 写宽字符到流中 fputws 写宽字符串到流中 fwide 检测流方向 fwprintf 写格式化数据到流 fwscanf 从流中读格式化数据 getwc 从流中获取宽字符 getwchar 从标准输入获取宽字符 putwc 给流写宽字符 putwchar 给标准输出写宽字符 swprintf 写格式化数据到宽字符串 swscanf 从流中读格式化数据 ungetwc 回退一个wc到流中 vfwprintf 从参数列表输出到流中 vfwscanf 从流中读入到参数列表 vswprintf 同上 vswscanf 同上 vwprintf 同上 vwscanf 同上 wprinf 同上 wscanf 同上 -
常规
wcstod
wcstof
wcstol
wcstold
wcstoll
wcstoul
wcstoull -
字符和字符串转换
btowc
mbrlen
mbrtowc
mbsinit
mbsrtowcs
wcrtomb
wctob
wcsrtombs -
字符串
wcscat
wcschr
wcscmp
wcscoll
wcscpy
wcscspn
wcslen
wcsncat
wcsncmp
wcsncpy
wcspbrk
wcsrchr
wcsspn
wcsstr
wcstok
wcsxfrm
wmemchr
wmemcmp
wmemcpy
wmemmove
wmemset -
时间
wcsftime
-
类型
mbstate_t
size_t
struct tm
wchar_t
wint_t -
宏
NULL
WCAHR_MAX
WCHAR_MIN
WEOF
<cwctype>/wctype.h>
宽字符类型相关。
函数
iswalnum
iswalpha
iswblank
iswcntrl
iswdigit
iswgraph
iswlower
iswprint
iswpunct
iswspace
iswupper
iswxdigit
towlower
towupper
iswctype
towctrans
wctrans
wctype
类型
wctrans_t
wctype_t
wint_t
其它
WEOF