C++标准库头文件(工具库->cstdlib)

参考网址:(整理成博文方便查阅打印)
https://zh.cppreference.com/w/cpp/header
https://www.runoob.com/cplusplus/cpp-standard-library.html

概念库
概念库(concepts)提供基础语言概念的定义,它们能用于进行模板实参的编译时校验,以及基于类型属性的函数派发。这些概念在程序中提供等式推理的基础。概念库不提供对外函数接口。

工具库
cstdlib 通用工具:程序控制、动态内存分配、随机数、排序与搜索

进程控制:
void abort();
导致非正常的程序终止(不进行清理)
void exit(int exit_code);
导致正常的程序终止并进行清理。exit_code为return返回的参数。
void quick_exit(int exit_code);
导致快速程序清理,不进行完全的清理。exit_code程序的退出状态。
void _Exit(int exit_code);
导致正常程序终止,不进行清理。
int atexit( * func);
注册 func 所指向的函数,使得在正常程序中止(通过 std::exit() 或从 main 函数返回)时调用它。func-指向正常程序终止时要调用的函数的指针。注册成功返回0,否则非零。
int at_quick_exit( * func);
注册 func 所指向的函数,使得在快速程序终止时调用它(通过 std::quick_exit )。
int system(const char * command);
以参数 command 调用宿主环境的命令处理器(例如 /bin/sh 、 cmd.exe 、 command.com )。返回实现定义值(通常是被调用程序所返回的值)。
例程:

std::system("ls -l >test.txt"); // 执行 UNIX 命令 "ls -l >test.txt"
std::cout << std::ifstream("test.txt").rdbuf();

char * getenv(const char * env_var);
于宿主环境(操作系统)提供的环境列表搜索匹配 env_var 所指向的 C 字符串,并返回指向与匹配的列表成员关联的 C 字符串的指针。

内存管理:
void * malloc(std::size_t size);
分配 size 字节的未初始化存储。成功时,返回指向新分配内存起始的指针。返回的指针必须用 std::free() 或 std::realloc() 解分配。
失败时,返回空指针。
std::size_t
是 sizeof 运算符所返回的一种无符号整数类型。通常被用于数组索引和循环计数。使用其它类型来进行数组索引操作的程序可能会在某些情况下出错,例如在 64 位系统中使用 unsigned int 进行索引时,如果索引号超过 UINT_MAX 或者依赖于 32 位取模运算的话,程序就会出错。
例程:

const std::size_t N = 10;
    int* a = new int[N];
    for (std::size_t n = 0; n < N; ++n)
        a[n] = n;
    for (std::size_t n = N; n-- > 0;) // 对于无符号类型的逆向循环技巧。
        std::cout << a[n] << " ";
    delete[] a;

void * aligned_alloc( std::size_t alignment, std::size_t size );
分配 size 字节的未初始化存储,由 alignment 指定其对齐。size 参数必须是 alignment 的整数倍。
#字节对齐
void * calloc( std::size_t num, std::size_t size );
分配 num 个大小为 size 的对象的数组,并初始化所有位为零。
void * realloc( void * ptr, std::size_t new_size );
重分配给定的内存区域。它必须是 std::malloc() 、std::calloc() 或 std::realloc() 先前分配的,且仍未被 std::free() 释放,否则行为未定义。ptr指向要被重分配的内存区域的指针,new_size数组的新大小。成功时,返回指向新分配内存起始的指针,失败时,返回空指针。
void free( void * ptr );
解分配先前分配的内存空间。ptr指向要解分配的内存的指针。

数值字符串转换
double atof( const char * str );
函数会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。成功时为对应 str 内容的 double 值。若转换值落在返回类型范围外,则返回值未定义。若不能进行转换,则返回 0.0 。
int atoi( const char * str );
(atol、atoll返回类型为long long)转译 str 所指向的字节字符串中的整数值。
long strtol( const char * str, char ** str_end, int base );
(strtoll返回类型为long long,strtoul转换成无符号整数)把参数 str 所指向的字符串根据给定的基数base转换为一个长整数,base必须介于 2 和 36(包含)之间,取零则自动检测数值进制。str_end指向指向字符指针的指针,函数设置 str_end 所指向的指针 指向最后被转译字符的后一字符,即字符串里的非数值部分也可以输出。
double strtod( const char * str, char ** str_end );(strtof返回类型为float,strtold返回类型为long double)转译 str 所指向的字节字符串中的浮点值。str_end指向指向字符指针的指针。
Parsing “111.11 -2.22 0X1.BC70A3D70A3D7P+6 1.18973e+4932zzz”:
‘111.11’ -> 111.11
’ -2.22’ -> -2.22
’ 0X1.BC70A3D70A3D7P+6’ -> 111.11
’ 1.18973e+4932’ -> range error, got inf

宽字符串操作
#多字节字符与宽字符
int mblen( const char * s, std::size_t n );
根据locale的设置确定字符的字节数。只检查前n个字符。成功返回字节数,失败返回-1。
int mbtowc( wchar_t * pwc, const char * s, std::size_t n );
将 s 指向其首字节的多字节字符转换成宽字符,若 pwc 非空则写入 *pwc 。 s 不是空指针,则返回多字节字符所含的字节数,或若 s 所指的首字节不组成合法多字节字符则返回 -1 ,或若 s 指向空字符 ‘\0’ 则返回 ​0​ 。
若 s 是空指针,则重置内部转换状态为初始迁移状态,并若当前多字节编码非状态依赖(不使用迁移序列)则返回 ​0​ ,或若当前多字节编码为状态依赖(使用迁移序列)则返回非零值。
int wctomb( char * s, wchar_t wc );
转换宽字符为其多字节表示。s-指向输出的字符数组的指针,wc-要转换的宽字符。
std::size_t mbstowcs( wchar_t * dst, const char * src, std::size_t len);
转换来自首元素为 src 所指向的数组的多字节字符串到其宽字符表示。被转换的字符存储于 dst 所指向数组的相继元素。写入目标数组的宽字符数不多于 len 。成功时,返回目标数组的宽字符数,不含终止符 L’\0’ 。转换错误时(若遇到非法多字节字符),返回 static_cast(-1) 。
std::size_t wcstombs( char * dst, const wchar_t * src, std::size_t len); 转换来自首元素为 src 所指向的数组到其始于初始迁移状态的多字节表示。转换出的字符被存储于 dst 所指向的数组的相继元素。写入目标数组的字节数不多于 len 。成功时,返回写入首元素为 dst 所指向的字符数组的字节数(包含任何迁移序列,但不含终止的 ‘\0’ )。转换错误时(若遇到非法宽字符),返回 static_cast(-1) 。

杂项算法与数学
int rand();
返回 ​0​ 与 RAND_MAX (包含 0 与 RAND_MAX )的随机数。
void srand( unsigned seed );
以值 seed 播种 std::rand() 所用的随机数生成器。实践是使用以 time(0) 为种子调用的结果。
void qsort( void * ptr, std::size_t count, std::size_t size, * comp );
以升序排序 ptr 所指向的给定数组。数组含 count 个 size 字节大小的元素。用 comp 所指向的函数比较对象。若 comp 指示二个元素等价,则其顺序未指定。comp - 比较函数。若首个参数小于第二个,则返回负整数值,若首个参数大于第二个,则返回正整数值,若两参数相等,则返回零。
void * bsearch( const void * key, const void * ptr, std::size_t count,std::size_t size, * comp );
在 ptr 所指向的数组中寻找等于 key 所指向的元素的元素。数组含有 count 个 size 字节的元素,且必须相对于 key 所指向的对象划分,即所有比较小于它的元素必须先出现于比较等于它的元素,而比较等于它者必须先出现于所有比较大于该关键对象的元素。完全排序的数组满足这些要求。用 comp 所指的函数比较数组元素。comp - 比较函数。若首个参数小于第二个,则返回负整数值,若首个参数大于第二个,则返回正整数值,若两参数相等,则返回零。作为首参数传递 key ,作为第二参数传递来自数组的元素。返回值指向找到的元素的指针,或若找不到元素则为空指针。
int abs( int n );
(labs、llabs)计算绝对值。
std::div_t div( int x, int y );
std::ldiv_t div( long x, long y );
std::lldiv_t div( long long x, long long y );

商是表达式 x/y 的结果。余数是表达式 x%y 的结果。

div_t output;
output.quot 商; output.rem余数。

你可能感兴趣的:(语言)