C 库

C 语言库

C++ 库被组织在 C 语言库相同结构的头文件中,并包括了相同的定义,但有以下的不同之处 :

  • 每个头文件的名字和 C 语言版本一样,但是多了 “c“ 前缀。例如,C++ 头文件 <cstdlib> 等价于 C 语言头文件 <stdlib.h>
  • 库中所有元素都被定义在了 std 命名空间中了。

虽然这样,但为了兼容 C,传统头文件 name.h (比如 stdlib.h ) 在全局作用域中同样提供了定义。这个手册中所有的例子就是使用这个版本,所以这些例子是完全与 C 兼容的,即使它在 C++ 中被废弃了。

在 C++ 的实现中当然也有某些特定的改变:

  • wchar_tchar16_tchar32_tbool 是 C++ 中的基本类型,因此,它们没有被定义在 C 语言中应该出现的头文件中。<iso646.h> 中的宏也一样,成了 C++ 中的关键字。
  • 下面这些函数的参数常量性定义有所改变:strchrstrpbrkstrrchrstrstrmemchr
  • 头文件 <cstdlib> 中的函数 atexitexitabort,在 C++ 中增加了行为。
  • 提供了一些重载版本的函数,使用额外的类型作为参数,但有相同的语义,例如,在头文件 <cmath> 中的的 flotlong double 版本的函数,long 版本的 absdiv

注解版本

C++ 98 包括了 1990 ISO C 标准和它的修正案 #1 (ISO/IEC 9899:1990 和 ISO/IEC 9899:1990/DAM 1) 描述的 C 库。

C++ 11 包括了 1990 ISO C 标准和它的 Technical Corrigenda 1,2,3 (ISO/IEC 9899:1999 和 ISO/IEC 9899:1999/Cor.1,2,3) 描述的 C 库,加上 <cuchar> (ISO/IEC 19769:2004)。

头文件 C90 (C++98)

头文件 描述
<cassert> (assert.h) C 诊断库
<cctype> (ctype.h) 字符处理函数 (头文件)
<cerrno> (errno.h) C 错误 (头文件)
<cfenv> (fenv.h) 浮点环境 (头文件)
<cfloat> (float.h) 浮点类型特性 (头文件)
<cinttypes> (inttypes.h) C 整数类型 (头文件)
<ciso646> (iso646.h) ISO 646 可选操作符拼写 (头文件)
<climits> (limits.h) 整数类型的大小 (头文件)
<clocale> (locale.h) C 本地化库 (头文件)
<cmath> (math.h) C 数学库 (头文件)
<csetjmp> (setjmp.h) 非局部跳转 (头文件)
<csignal> (signal.h) 处理信号的 C 库 (头文件)
<cstdarg> (stdarg.h) 可变数量参数处理 (头文件)
<cstddef> (stddef.h) C 标准定义 (头文件)
<cstdio> (stdio.h) 操作输入/输出的 C 库 (头文件)
<cstdlib> (stdlib.h) C 标准通用工具库 (头文件)
<cstring> (string.h) C 字符串 (头文件)
<ctime> (time.h) C 时间库 (头文件)

ISO-C 90 修正案 1 添加了两个额外的头文件:<cwchar><cwctype>

头文件 C99 (C++11)

头文件 描述
<cstdbool> (stdbol.h) 布尔类型 (头文件)
<cstdint> (stdint.h) 整数类型 (头文件)
<ctgmath> (tgmath.h) 类型泛化的数学 (头文件)
<cuchar> (uchar.h) Unicode 字符 (头文件)
<cwchar> (wchar.h) 宽字符 (头文件)
<cwctype> (wctype.h) 宽字符类型 (头文件)