当前位置: 首页 > news >正文

「C/C++」C/C++标准库之#include<cstdlib>通用工具库

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「C/C++」C/C++程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明

目录

    • C++中的<cstdlib>:功能详解与应用实例
      • 主要功能及函数
      • 应用实例

C++中的:功能详解与应用实例

是C++标准库中的一个头文件,它提供了各种通用工具函数,这些函数最初来源于C标准库中的<stdlib.h>,并在C++中进行了标准化和扩展。在C++编程中,头文件具有重要地位,它涵盖了字符串转换、类型转换、随机数生成、内存管理和系统调用等多个方面的功能。

主要功能及函数

  1. 字符串转换

    • atoi(const char* str): 将字符串转换为整数。
    • atol(const char* str): 将字符串转换为长整数。
    • atof(const char* str): 将字符串转换为浮点数。
    • strtod(const char* str, char** endptr): 将字符串转换为双精度浮点数。
    • strtol(const char* str, char** endptr, int base): 将字符串转换为长整数,支持指定进制。
    • strtoul(const char* str, char** endptr, int base): 将字符串转换为无符号长整数,支持指定进制。
    • strtoll(const char* str, char** endptr, int base)(C++11): 将字符串转换为长长整数。
    • strtoull(const char* str, char** endptr, int base)(C++11): 将字符串转换为无符号长长整数。
  2. 伪随机数生成

    • rand(): 生成一个伪随机数,通常在0到RAND_MAX之间。
    • srand(unsigned int seed): 设置随机数生成器的种子,以确保每次程序运行时生成不同的随机数序列。
  3. 动态内存管理

    • malloc(size_t size): 分配指定大小的内存空间。
    • calloc(size_t num, size_t size): 分配指定数量和大小的内存空间,并将其初始化为0。
    • realloc(void* ptr, size_t size): 重新分配已分配内存的大小。
    • free(void* ptr): 释放之前通过malloccalloc分配的内存空间。
  4. 进程控制与环境查询

    • exit(int status): 终止程序执行,并返回一个状态码。
    • abort(): 异常终止一个进程。
    • getenv(const char* name): 获取环境变量的值。
    • system(const char* command): 在新进程中执行操作系统命令。
  5. 整数算术

    • abs(int j): 计算整数的绝对值。
    • labs(long j): 计算长整数的绝对值。
    • div(int numer, int denom): 计算两个整数的商和余数。
    • ldiv(long numer, long denom): 计算两个长整数的商和余数。
  6. 多字节字符与字符串

    • mblen(const char* s, size_t n): 获取多字节字符的长度。
    • mbtowc(wchar_t* pwc, const char* s, size_t n): 将多字节序列转换为宽字符。
    • wctomb(char* s, wchar_t wc): 将宽字符转换为多字节序列。
    • mbstowcs(wchar_t* pwcs, const char* s, size_t n): 将多字节字符串转换为宽字符串。
    • wcstombs(char* s, const wchar_t* pwcs, size_t n): 将宽字符串转换为多字节字符串。
  7. 搜索与排序

    • bsearch(const void* key, const void* base, size_t nmemb, size_t size, int(*compar)(const void*, const void*)): 二进制搜索。
    • qsort(void* base, size_t nmemb, size_t size, int(*compar)(const void*, const void*)): 排序数组元素。

应用实例

以下是一些使用中函数的实例:

  1. 使用exit函数

    #include <iostream>
    #include <cstdlib>int main() {std::cout << "This program will exit now." << std::endl;exit(0); // 正常退出程序return 0; // 这行代码不会被执行
    }
    
  2. 使用system函数

    #include <iostream>
    #include <cstdlib>int main() {std::cout << "Executing a system command: dir" << std::endl;system("dir"); // 在Windows上显示当前目录的文件和文件夹return 0;
    }
    
  3. 使用mallocfree函数

    #include <iostream>
    #include <cstdlib>int main() {int* ptr = (int*)malloc(10 * sizeof(int)); // 分配内存if (ptr == NULL) {std::cout << "Memory allocation failed." << std::endl;return 1;}for (int i = 0; i < 10; ++i) {ptr[i] = i * i; // 使用分配的内存}for (int i = 0; i < 10; ++i) {std::cout << "Element " << i << ": " << ptr[i] << std::endl;}free(ptr); // 释放内存return 0;
    }
    
  4. 使用atoiatof函数

    #include <iostream>
    #include <cstdlib>int main() {std::string str1 = "123";std::string str2 = "456.78";int num1 = std::atoi(str1.c_str()); // 将字符串转换为整数double num2 = std::atof(str2.c_str()); // 将字符串转换为浮点数std::cout << "Integer: " << num1 << std::endl;std::cout << "Float: " << num2 << std::endl;return 0;
    }
    
  5. 使用randsrand函数

    #include <cstdlib>
    #include <iostream>
    #include <ctime>int main() {std::srand(std::time(nullptr)); // 使用当前时间作为随机数种子for (int i = 0; i < 5; ++i) {std::cout << std::rand() % 100 << " "; // 生成0到99之间的随机数}std::cout << std::endl;return 0;
    }
    

通过这些实例,我们可以看到头文件在C++编程中的广泛应用。它提供了一系列功能强大的函数,使得开发者能够方便地处理字符串转换、随机数生成、内存管理等任务。在实际开发中,合理利用这些函数可以大大提高编程效率和代码质量。


在这里插入图片描述

相关文章:

「C/C++」C/C++标准库之#include<cstdlib>通用工具库

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

Oracle视频基础1.1.3练习

1.1.3 需求&#xff1a; 完整格式查看所有用户进程里的oracle后台进程 查看物理网卡&#xff0c;虚拟网卡的ip地址 ps -ef | grep oracle /sbin/ifconfig要以完整格式查看所有用户进程中的 Oracle 后台进程&#xff0c;并查看物理和虚拟网卡的 IP 地址&#xff0c;可以使用以下…...

python项目实战——多协程下载美女图片

协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …...

基于.NET 8.0,C#中Microsoft.Office.Interop.Excel来操作office365的excel

开发环境&#xff1a; Visual Studio 2022 office365 项目模板&#xff1a;WPF应用程序 框架&#xff1a;.NET 8.0 依赖&#xff1a;Microsoft.Office.Interop.Excel 注意&#xff1a; 1.使用Microsoft.Office.Interop.Excel库时&#xff0c;服务器或电脑里面必须安装得…...

使用无线方式连接Android设备进行调试的两种方法

1.使用配对码配对设备方式 手机&#xff08;或者平板等安卓设备&#xff09;和电脑需连接在同一WiFi 下&#xff1b;保证 SDK 为最新版本&#xff08;adb --version ≥ 30.0.0&#xff09;&#xff1b; step1.手机启用开发者选项和无线调试模式&#xff08;会提示确认&#xff…...

Valgrind的使用

Valgrind 是一个强大的开源工具,用于检测程序中的内存错误、内存泄漏以及线程问题。它广泛应用于 C/C++ 等需要手动管理内存的编程语言中。以下内容将详细介绍 Valgrind 的安装、基本使用方法、常用命令及其输出结果的解析。 1. 什么是 Valgrind? Valgrind 是一个用于内存调…...

微信小程序瀑布流实现,瀑布流长度不均等解决方法

这是一开始实现的瀑布流&#xff0c;将数据分为奇数列和偶数列 <view class"content-left"><block wx:for"{{list}}" wx:key"list"><template isitem-data data{{...item}} wx:if"{{index % 2 0}}"></template&…...

Notepad++通过自定义语言实现日志按照不同级别高亮

借助Notepad的自定义语言可以实现日志的按照不同级别的高亮&#xff1b; 参考&#xff1a; https://blog.csdn.net/commshare/article/details/131208656 在此基础上做了一点修改效果如下&#xff1a; xml文件&#xff1a; <NotepadPlus><UserLang name"Ansibl…...

2024年四川省大学生程序设计竞赛 补题记录

文章目录 Problem A. 逆序对染色&#xff08;思维树状数组&#xff09;Problem B. 连接召唤&#xff08;贪心&#xff09;Problem E. L 型覆盖检查器&#xff08;模拟&#xff09;Problem F. 小球进洞&#xff1a;平面版&#xff08;几何&#xff09;Problem G. 函数查询Proble…...

17_事件的处理

目录 绑定事件与解绑事件优化事件的绑定和解绑方式处理不同事件类型的绑定处理同一事件类型多个事件处理函数事件冒泡与更新时机问题 绑定事件与解绑事件 既然要处理事件&#xff0c;那么首先面临的问题是如何在 vnode 中描述这个事件&#xff0c;在 vnode.props 中&#xff0…...

1FreeRTOS学习(队列、二值信号量、计数型信号量之间的相同点和不同点)

相同点&#xff1a; &#xff08;1&#xff09;传递区间 队列、二值信号量、计数型信号量均可用在任务与任务&#xff0c;任务与中断之间进行消息传递 &#xff08;2&#xff09; 传递方式 创建队列--发送队列--接受队列 创建二值信号量--发送二值信号量--接受二值信号量 创建计…...

数据库设计与范式及其应用

数据库设计是数据库管理系统&#xff08;DBMS&#xff09;中的核心环节&#xff0c;良好的数据库设计不仅可以提高数据存取的效率&#xff0c;还能增强数据的可维护性和一致性。范式&#xff08;Normalization&#xff09;是一种设计原则&#xff0c;用于减少数据冗余和提高数据…...

笔记-配置PyTorch(CUDA 12.2)

文章目录 前言一、安装 PyTorch&#xff08;CUDA 12.2&#xff09;1. 创建并激活 Conda 环境2. 安装 PyTorch&#xff08;CUDA 12.2&#xff09;3. 安装 torch_geometric 及依赖项4. 验证安装 总结 前言 一、安装 PyTorch&#xff08;CUDA 12.2&#xff09; 1. 创建并激活 Con…...

[C++]——红黑树(附源码)

目录 一、前言 二、正文 2.1 红黑树的概念 2.2 红黑树的性质 2.3红黑树节点的定义 2.4 红黑树的插入 2.4.1 情况一 2.4.2 情况二 ​编辑 2.4.3 情况三 2.5 红黑树的验证 三、全部代码 四、结语 一、前言 在上一篇博客中&#xff0c;为小伙伴们进行了AVL树的讲解&#…...

网络文件系统搭建

在CentOS7上搭建网络文件系统&#xff08;NFS&#xff09;&#xff0c;并让客户端进行挂载&#xff0c;具体步骤如下&#xff1a; 1. 服务器端操作 安装NFS服务器软件包&#xff1a; 执行以下命令安装NFS服务&#xff1a; sudo yum install nfs-utils -y 启动并启用NFS服务&…...

基于vue、VantUI、django的程序设计

首先构建vue项目&#xff0c;构建项目点这里 安装 npm install axios axios简介 Axios 是一个基于 promise 的 HTTP 库&#xff0c;用于发起请求和接收响应&#xff0c;实现异步操作 基本使用 axios对象 请求响应拦截 在utils文件夹里新建ajax.js 创建一个axios对象并…...

京准电钟解读:NTP网络对时服务器助力厂区改造方案

京准电钟解读&#xff1a;NTP网络对时服务器助力厂区改造方案 京准电钟解读&#xff1a;NTP网络对时服务器助力厂区改造方案 1&#xff09;系统概述 时钟系统可通过网络进行管理及时间校对&#xff0c;为厂区提供高精度、全天时、全天候 的授时服务&#xff0c;统一全厂各种系统…...

本地docker-compose仓库搭建以及推送docker镜像到仓库

前言 以下部分知识只适用于linux&#xff0c;不适合小白&#xff0c;请自行甄别执行 1.搭建 #参考 https://blog.csdn.net/u011535199/article/details/107457275 version: 3 services:registry:restart: alwaysimage: registry:2ports:- 5000:5000environment:#REGISTRY_HT…...

WPF+MVVM案例实战(八)- 自定义开关控件封装实现

文章目录 1、案例运行效果2、项目准备2、功能实现1、控件模板实现2、控件封装1、目录与文件创建2、各文件功能实现 3、开关界面与主窗体菜单实现1、开关界面实现2、主窗体菜单实现 4、源代码获取 1、案例运行效果 2、项目准备 打开项目 Wpf_Examples&#xff0c;新建ToggleBut…...

单机kafka性能需要高性能的硬件做支撑

一般来说&#xff0c;单机kafka在硬件支持的情况下&#xff0c;能支持每秒100万写入&#xff0c;如果硬件没有那么好的话(机械硬盘&#xff0c;容器内给内存8G&#xff0c; CPU也不是很好)&#xff0c;就只能减少每秒的写入量&#xff0c;每秒写入5万都比较不错了。 如果强行每…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...