介绍 C++ 头文件 — <cstdlib> 头文件

这篇具有很好参考价值的文章主要介绍了介绍 C++ 头文件 — <cstdlib> 头文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍 C++ 头文件 — <cstdlib> 头文件

<cstdlib> 头文件

简介

C++ 标准库头文件 <cstdlib> 是 C++ 程序员使用最广泛的库头文件。它定义了一系列函数和宏,以实现跨团队、跨平台的高效且具有卓越表现的标准化 C++ 代码。

C++ 是一种广受欢迎的程序语言,它能崛起的最初原因就是可以与 C 语言兼容。C 语言曾经是且现在仍然是一种流行、成熟的程序语言。兼容意味着程序员更容易适应这种语言,更重要的是,C++ 开发人员还可以利用现有的 C 语言代码。

程序员不需要从核心函数开始重建所有内容,可以在按合理步调转向 C++ 时,重复使用成熟的代码块。具体来讲,他们能够利用 C 语言标准库头文件 <stdlib.h>

目前,C++ cstdlib 是原始 <stdlib.h> 的 C++ 增强版。

命名空间和宏

namespace std {
    using size_t = see definition;
    using div_t = see definition;
    using ldiv_t = see definition;
    using lldiv_t = see definition;
}

#define NULL
#define EXIT_FAILURE
#define EXIT_SUCCESS
#define RAND_MAX
#define MB_CUR_MAX

宏常量

宏常量 用途
EXIT_SUCCESSEXIT_FAILURE 指示程序执行的执行状态
MB_CUR_MAX 当前本地环境中多字节字符的最大字节数
NULL 实现定义的空指针常量
RAND_MAX std::rand 生成的最大可能值

类型

类型 用途
div_t 结构体类型,std::div 函数的返回值
ldiv_t 结构体类型,std::ldiv 函数的返回值
lldiv_t 结构体类型,std::lldiv 函数的返回值
size_t sizeof 运算符返回的无符号整数类型

函数

进程控制

函数 用途
abort 导致非正常的程序终止(不进行清理)
exit 导致正常的程序终止并进行清理
quick_exit 导致快速程序终止,不进行完全的清理
_Exit 导致正常的程序终止,不进行清理
atexit 注册将于调用 std::exit() 时被调用的函数
at_quick_exit 注册将于调用 quick_exit 时被调用的函数
system 调用宿主环境的命令处理器
getenv 访问环境变量列表

内存管理

函数 用途
malloc 分配内存
aligned_alloc 分配对齐的内存
calloc 分配并清零内存
realloc 扩张先前分配的内存块
free 解分配先前分配的内存

数值字符串转换

函数 用途
atof 转换字节字符串为浮点值
atoiatolatoll 转换字节字符串为整数值
strtolstrtoll 转换字节字符串为整数值
strtoulstrtoull 转换字节字符串为无符号整数值
strtofstrtodstrtold 转换字节字符串为浮点值

宽字符串操作

函数 用途
mblen 返回下一个多字节字符中的字节数
mbtowc 将下一个多字节字符转换成宽字符
wctomb 转换宽字符为其多字节表示
mbstowcs 转换窄多字节字符串为宽字符串
wcstombs 转换宽字符串为窄多字节字符串

杂项算法与数学

函数 用途
rand 生成伪随机数
srand 初始化伪随机数生成器
qsort 对未指定类型的元素的一个范围进行排序
bsearch 在未指定类型的数组中搜索元素
abslabsllabs 计算整数值的绝对值
divldivlldiv 计算整数除法的商和余数

概要

namespace std {
  using size_t = ;
  using div_t = ;
  using ldiv_t = ;
  using lldiv_t = ;
}
#define NULL 
#define EXIT_FAILURE 
#define EXIT_SUCCESS 
#define RAND_MAX 
#define MB_CUR_MAX 
namespace std {
  extern "C" using /*c-atexit-handler*/ = void(); 
  extern "C++" using /*atexit-handler*/ = void(); 
  extern "C" using /*c-compare-pred*/ = int(const void* , const void*); 
  extern "C++" using /*compare-pred*/ = int(const void* , const void*); 
  // 启动与终止
  [[noreturn]] void abort() noexcept;
  int atexit(/*c-atexit-handler*/ * func) noexcept;
  int atexit(/*atexit-handler*/ * func) noexcept;
  int at_quick_exit(/*c-atexit-handler*/ * func) noexcept;
  int at_quick_exit(/*atexit-handler*/ * func) noexcept;
  [[noreturn]] void exit(int status);
  [[noreturn]] void _Exit(int status) noexcept;
  [[noreturn]] void quick_exit(int status) noexcept;
  char* getenv(const char* name);
  int system(const char* string);
  // C 标准库内存分配
  void* aligned_alloc(size_t alignment, size_t size);
  void* calloc(size_t nmemb, size_t size);
  void free(void* ptr);
  void* malloc(size_t size);
  void* realloc(void* ptr, size_t size);
  double atof(const char* nptr);
  int atoi(const char* nptr);
  long int atol(const char* nptr);
  long long int atoll(const char* nptr);
  double strtod(const char* nptr, char** endptr);
  float strtof(const char* nptr, char** endptr);
  long double strtold(const char* nptr, char** endptr);
  long int strtol(const char* nptr, char** endptr, int base);
  long long int strtoll(const char* nptr, char** endptr, int base);
  unsigned long int strtoul(const char* nptr, char** endptr, int base);
  unsigned long long int strtoull(const char* nptr, char** endptr, int base);
  // 多字节/宽字符串及字符转换函数
  int mblen(const char* s, size_t n);
  int mbtowc(wchar_t* pwc, const char* s, size_t n);
  int wctomb(char* s, wchar_t wchar);
  size_t mbstowcs(wchar_t* pwcs, const char* s, size_t n);
  size_t wcstombs(char* s, const wchar_t* pwcs, size_t n);
  // C 标准库算法
  void* bsearch(const void* key, const void* base,
                size_t nmemb, size_t size, /*c-compare-pred*/ * compar);
  void* bsearch(const void* key, const void* base,
                size_t nmemb, size_t size, /*compare-pred*/ * compar);
  void qsort(void* base, size_t nmemb, size_t size, /*c-compare-pred*/ * compar);
  void qsort(void* base, size_t nmemb, size_t size, /*compare-pred*/ * compar);
  // 低质量随机数生成
  int rand();
  void srand(unsigned int seed);
  // 绝对值
  int abs(int j);
  long int abs(long int j);
  long long int abs(long long int j);
  float abs(float j);
  double abs(double j);
  long double abs(long double j);
  long int labs(long int j);
  long long int llabs(long long int j);
  div_t div(int numer, int denom);
  ldiv_t div(long int numer, long int denom);
  lldiv_t div(long long int numer, long long int denom); 
  ldiv_t ldiv(long int numer, long int denom);
  lldiv_t lldiv(long long int numer, long long int denom);
}

参考

  • https://c-cpp.com/cpp/utility/program.html

  • https://zhuanlan.zhihu.com/p/447992440

  • https://c-cpp.com/cpp/numeric/random.html

  • https://learn.microsoft.com/zh-cn/cpp/standard-library/cstdlib?view=msvc-170

  • https://baike.baidu.com/item/cstdlib/5519425?fr=ge_ala文章来源地址https://www.toymoban.com/news/detail-649954.html

到了这里,关于介绍 C++ 头文件 — <cstdlib> 头文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++标准库 -- 泛型算法 (Primer C++ 第五版 · 阅读笔记)

    顺序容器只定义了很少的操作:在多数情况下,我们可以添加和删除元素访问首尾元素、确定容器是否为空以及获得指向首元素或尾元素之后位置的迭代器。 我们可以想象用户可能还希望做其他很多有用的操作:查找特定元素、替换或删除一个特定值、重排元素顺序等。 标准库

    2023年04月21日
    浏览(41)
  • 【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

    将被加密明文划分成一个一个的分组,输入n比特明文分组,输出n比特密文分组。 若映射可逆,具有 x n ! x^n! x n ! 种替换可能性。 如以下示例,每个4比特输入唯一映射为另一个4比特输出。 2.1 什么是Feistel密码结构 1973年由 IBM的Horst Feistel首次提出 ,通过将明文分组分成 左右

    2023年04月08日
    浏览(42)
  • C++、STL标准模板库和泛型编程 ——迭代器、 算法、仿函数(侯捷)

    侯捷 C++八部曲笔记汇总 - - - 持续更新 ! ! ! 一、C++ 面向对象高级开发 1、C++面向对象高级编程(上) 2、C++面向对象高级编程(下) 二、STL 标准库和泛型编程 1、分配器、序列式容器 2、关联式容器 3、迭代器、 算法、仿函数 4、适配器、补充 三、C++ 设计模式 四、C++ 新标准 五、

    2023年04月25日
    浏览(51)
  • C++动态库编程 | C++名称改编、标准C接口、extern “C”、函数调用约定以及def文件详解

    目录 1、导入导出声明 2、C++函数名称改编与extern \\\"C\\\" 3、函数调用约定与跨语言调用 3.1、函数调用约定 3.2、跨语言调用dll库接口 3.3、函数调用约定以哪个为准 4、def文件的使用 5、在C++程序中引用ffmpeg库中的头文件链接报错问题 6、最后 VC++常用功能开发汇总(专栏文章列表,

    2024年02月11日
    浏览(59)
  • 0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作

        封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个) 再把该容器中的对象,保存到文件中。 再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。

    2024年02月10日
    浏览(45)
  • c++(8.29)auto关键字,lambda表达式,数据类型转换,标准模板库,list,文件操作+Xmind

    封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个) 再把该容器中的对象,保存到文件中。 再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。  1.模板类 2.异常(异常情况为取钱时取的钱小于0或者大于余额)

    2024年02月11日
    浏览(44)
  • C++古老算法介绍

    本篇文章我们来介绍一下常用算法 1.贪心算法 贪心算法(Greedy Algorithm)是一种解决问题的策略, 它在每一步都做出当前看来最优的选择,而不考虑全局最优解。(局部最优解得到整体最优解) 贪心算法通常适用于满足\\\"贪心选择性质\\\"和\\\"最优子结构性质\\\"的问题。 贪心算法使

    2024年02月22日
    浏览(31)
  • C++文件读写类介绍

    一、现有的文件读写方案 该库 拥有输入输出模板类及两个标准实例化集:一个是用于操作char类型元素的实例化集(即常用的cin,cout等) ,另一个用于操作wchar_t类型元素的实例化集。 模板类以 basic_ 作为前缀,实例化的类去掉 basic_ ,例如 basic_ios 与 ios 。代码如下: QFile 针对

    2024年02月02日
    浏览(36)
  • C++基础-介绍·数据结构·排序·算法

    C++是一门风格严谨又不失自由的开发语言,提供了完整的内存管理、支持函数式编程和面向对象编程,支持模板、多继承、多实现、重载、重写等多态特性。 优势在于目前90%的操作系统、数据库、应用基础架构、硬件嵌入式等都是使用C/C++制作的,而C++是对C的标准扩展,掌握

    2024年02月03日
    浏览(43)
  • 【C++入门】文件流(fstream)介绍和使用

    mode 含义 ios::in 以读取方式打开文件 ios::out 以写入方式打开文件 ios::binary 以二进制方式存取 ios::ate 存取指针在文件末尾 ios::app 写入时采用追加方式 ios::trunc 写入时抹去旧数据 (1)在C++11标准时,open函数的文件路径可以传char指针也可以传string指针,而在C++98标准,open函数的文

    2024年02月02日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包