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
                









