C++ CSTDLIB

C++ CSTDLIB

在C++中,cstdlib是什么

C++ CSTDLIB

C++标准库头文件(cstdlib在C++中)是包含该语言最广泛使用的库之一的头文件。该头文件指定了一组方法和宏,以帮助团队和技术编写高效、高性能、标准化的C++代码。

C++ CSTDLIB

C ++是一种广泛使用的编程语言,其成功的主要原因之一是与C兼容,而在当时,C仍然是一种著名且非常好的语言。这种灵活性不仅使开发人员更易于适应,而且还使C ++开发人员能够利用现有的C代码。

开发人员无需从零开始,就能通过相对快速地转换到C ++而重复使用成熟的代码块。特别是,他们能够使用C标准库头文件stdlib.h。如今,在C ++中,cstdio是最初的< stdlib.h>的改进版本。

cstdlib与stdlib.h

标准C库头文件< stdlib.h>为C程序员提供了可靠和有效的内存动态分配、数据类型转换、伪随机数生成、进程控制、搜索和排序、数学以及多字节或宽字符操作。除了这些常用技术之外,还经常使用常量以提高代码在各行业和技术中的一致性。

命名空间和头文件

最初的C ++规范C ++ 98指定了使用。此外,随着命名空间的引入,新编写的C ++库函数不再在全局未定义的命名空间中声明。它们将只在标准命名空间std中定义。

从长远看,对C ++使用cstdio意味着< stdlib.h>中的所有代码都在std命名空间中声明。因此,当程序员希望使用标准库函数时,他们必须进行限定。这可以明确地完成,也可以通过using指令完成,如下所示:

C++ CSTDLIB

图1 说明了std::shared_ptr作为双向链表组件的使用。

左列中对shared ptr<>的未定义使用导致错误,因为该语句不属于全局命名空间。中列清楚地指定了命名空间,告知编译器可以在哪里找到它。最右列的using namespace std命令指示编译器在局部或全局域中找不到的程序中查找std。值得强调的是,第三种(最右列)选择被认为是不道德的。另一种不经提前提到的方法是使用std::shared_ptr指令添加仅shared_ptr。

其他特性

C++库的cstdlib提供了经典C函数、宏和数据类型的子集。绝对值(abs)函数的声明集是其中的一个实例。C规定了用于确定整数、长整数或长长整数值的绝对值(abs)所需的过程,这些过程定义在stdlib.h中。然而,并没有一种方法可以确定浮点数、双精度数或长双精度数的绝对值。这些类型相反在另一个常用的C头文件math.h中声明。

绝对值数据类型 函数 C头文件
整数 int abs(int x) stdlib.h
长整数 long labs(long x) stdlib.h
长长整数 long long llabs(long long x) stdlib.h
浮点数 float fabsf(float x) math.h
双精度浮点数 double fabs(double x) math.h
长双精度浮点数 long double fabsl(long double x) math.h

图2: C标准库绝对值函数

所有以下实例都由C++头文件的cstdlib中对应的abs()重载覆盖。

包括了什么内容

C++头文件cstdlib包含各种成员函数、数据类型和常量值。头文件定义的函数在下表中进行了描述。

转换函数

转换函数 解释
atol 通过将字符串转换为长整型值来进行工作。
atof 从字符串中创建一个双精度浮点数。请记住返回值不是浮点数。
atoi 该函数将字符串转换为整型。

下面列出的功能成为了对上面列出的功能更可靠的方法。

转换函数 解释
stltoul 此函数将字符串转换为无符号长整型。
strtod 此函数将字符串转换为双精度浮点数。
strtoull 此函数将字符串转换为无符号长长整型。
strtol 此函数将字符串转换为长整型。
strtoll 此函数将字符串转换为长长整型。

与随机数相关的功能

随机数 解释
random 一个在C语言中返回非标准的整数的函数(由POSIX提供)
srandom 设置随机数生成器的种子(非标准C语言,POSIX)
rand 该函数生成一个伪随机整数。
srand 为随机数生成器设置种子值。

动态内存分配函数

内存分配 解释
calloc 使用堆来分配内存(指定大小和数量; 初始化内存)
free 应该释放内存。
malloc 使用堆来分配内存(指定整个块的大小)
realloc 修改先前已分配的内存量。

搜索和排序功能

搜索和排序 说明
qsort 快速排序可用于对数组进行排序。
bsearch 在数组上实现二分搜索。

数学函数

数学函数 解释
div 将整数除以商和余数,得到结果。
abs 确定整数的绝对值。
ldiv 长整数除法,输出商和余数。
labs 找到长整数的绝对值。

使用这些函数来处理多字节和宽字符。

多字节/宽字符函数 解释
wctomb 将多字节字符转换为宽字符。
mblen 返回多字节字符的大小。
mbstowcs 将多字节字符序列转换为宽字符序列。
mbtowc 将多字节字符转换为宽字符。
wcstombs 将宽字符序列转换为多字节字符序列。

宏与常量

C++库的cstdlib包含了许多宏和常量,它们有助于C++开发和代码的标准化。举个示例,考虑main函数返回的常量值:

EXIT_SUCCESS

EXIT_SUCCESS常量可以作为main函数的返回值,被请求的框架解释为执行成功。虽然0也表示程序的完美执行,但EXIT_SUCCESS是特定于实现的。

EXIT_FAILURE

EXIT_FAILURE常量也作为main函数的返回值。然而,它向调用框架传达了实现失败的消息,可能是由于主要的操作系统故障。

C++ CSTDLIB

NULL表示空指针常量,RAND MAX表示由rand命令生成的最大允许值,MB CUR MAX表示当前语言环境下多字节字符的最大字节数。这些都是C++中的常量值,由cstdlib定义。

结论

C++通用标准库的头文件通常被缩写为cstdlib。它提供了一系列基本操作,用于数据类型转换、伪随机数生成、内存分配、搜索、排序、数学运算以及处理宽字符或多字节字符。此外,它还包含一些方便的宏,用来表示固定的数值。C++程序员经常使用cstdlib中的类型、方法或常量,而无需直接包含该头文件,因为其他头文件已经包含了它。然而,对于特定的类型和工具来自何处的不了解,可能会在稍后编译错误出现时产生问题,当早期包含的头文件被移除时,一个变量可能会出现“未被识别”的情况。了解cstdlib的必要性有助于在这种情况下减少时间的浪费。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程