当前位置: 首页 > 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万都比较不错了。 如果强行每…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...