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

news2024/11/6 7:02:04

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「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++编程中的广泛应用。它提供了一系列功能强大的函数,使得开发者能够方便地处理字符串转换、随机数生成、内存管理等任务。在实际开发中,合理利用这些函数可以大大提高编程效率和代码质量。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Resnet代码实现

图2 18-layer、34-layer的残差结构 图3 50-layer、101-layer、102-layer的残差结构 import torch import torch.nn as nn#这个18或者34层网络的残差模块&#xff0c;根据ResNet的具体实现可以自动匹配 class BasicBlock(nn.Module):conv1 stride1对应的实线残差&#xff0c;因…

为什么大家都在学数字孪生呢?

随着物联网&#xff0c;大数据、人工智能等技术的发展&#xff0c;新一代信息技术与制造业正在深度融合&#xff0c;人们与物理世界的交互方式正在发生转折性的变化。数字化转型正在成为企业的重要战略&#xff0c;而数字孪生则成为全新的焦点。 当下&#xff0c;在数字技术和…

IDEA使用Maven Helper查看整个项目的jar冲突

在插件市场安装Maven Helper&#xff0c;安装好后&#xff0c;重启IDEA&#xff1b;双击打开可能存在jar冲突的pom文件&#xff1b;在右侧面板查看冲突,text是引入的依赖明细&#xff0c;点击Dependecy Analyzer选项卡即可查看冲突的jar。

「Pytorch」如何理解深度学习中的算子(operator)

在深度学习中&#xff0c;“算子”&#xff08;operator&#xff09;通常指的是在神经网络中进行的各种数学运算或函数。这些算子可以是基本的数学操作&#xff0c;如加法、乘法、卷积&#xff0c;也可以是更复杂的变换&#xff0c;如激活函数和池化操作。 主要类型的算子 线性…

Hbuilder html5+沉浸式状态栏

manifest.json源码视图添加 {"statusbar": {"immersed": true }如图&#xff1a; 2、plusready准备&#xff0c;将状态栏字体变黑&#xff0c;不然背景白色、状态栏白色看不到 //2.1 如果你用了mui&#xff0c; mui.plusReady(function(){plus.navigat…

windows/linux注册服务与阿里镜像仓库使用

这里写目录标题 启动Windows将jar注册服务Linux将jar设置开机启动 外网环境编译打包 启动 Windows将jar注册服务 将jar包导入到服务器上&#xff0c;将WinSW工具也放到服务器上。 winSw下载地址&#xff1a;https://github.com/winsw/winsw/releases 依据下图修改xml内容即可…

建筑行业知识库搭建:好处、方法与注意事项

在建筑行业&#xff0c;知识管理对于提升项目效率、降低成本、增强创新能力以及构建竞争优势具有至关重要的作用。搭建一个高效、系统的建筑行业知识库&#xff0c;不仅有助于实现知识的有效沉淀与便捷共享&#xff0c;还能促进知识在项目实践中的灵活应用&#xff0c;从而加速…

Oracle与SQL Server的语法区别

1&#xff09;日期和日期转换函数。 SQL: SELECT A.*, CASE WHEN NVL(PAA009,) OR PAA009 >Convert(Varchar(10), SYSDATE,120) THEN Y ELSE N END AS ActiveUser FROM POWPAA A WHERE PAA001admin or PAA002admin Oracle: SELECT A.*, CASE WHEN NVL(PAA009,) or PAA009&…

【算法赌场】区间合并

区间问题 区间问题的引入 数学上&#xff0c;用两个数字可以确定数轴上的一个区间&#xff0c;较小的数字叫做区间的左端点&#xff0c;也叫区间起点&#xff0c;较大的数字叫做区间的右端点&#xff0c;也叫区间终点。 在算法竞赛中&#xff0c;很多题目是以区间为单位去进行…

GPT-Sovits-2-微调模型

1. 大致步骤 上一步整理完数据集后&#xff0c;此步输入数据, 微调2个模型VITS和GPT&#xff0c;位置在 <<1-GPT-SoVITS-tts>>下的<<1B-微调训练>> 页面的两个按钮分别执行两个文件: <./GPT_SoVITS/s2_train.py> 这一步微调VITS的预训练模型…

使用列表推导式处理列表中符合条件的元素将结果组成新的列表

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 使用列表推导式处理 列表中符合条件的元素 将结果组成新的列表 执行以下代码后&#xff0c;输出是什么&#xff1f; def process_numbers(numbers): return [1 / x for x in numbers if x ! …

SSM项目部署到服务器

将SSM&#xff08;Spring Spring MVC MyBatis&#xff09;项目部署到服务器上&#xff0c;通常需要以下步骤&#xff1a; 打包项目 生成一个WAR文件&#xff0c;通常位于target目录下 配置Tomcat&#xff1a; 将生成的WAR文件复制到Tomcat的webapps目录下。 配置conf/se…

TortoiseSVN 文件夹以及文件不显示差异感叹解决步骤

直接修改注册表&#xff0c;把TortoiseSVN图标悬浮注册项提前&#xff0c;靠后就不显示&#xff0c; 如下图 打开注册表&#xff0c;重命名TortoiseSVN 相关项&#xff0c;前面加上三四个空格&#xff0c;重启电脑即可。

架构师备考-软件测试

定义 软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程&#xff0c;其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 软件测试的目的就是确保软件的质量、确认软件以正确的方式做了用户所期望的事情&#xff0c;所以软件测试工作主要是…

【实验九】前馈神经网络(5)--鸢尾花分类

实验内容 目录 1 .小批量梯度下降法 2 .数据处理 &#xff08;1&#xff09;将数据集封装为Dataset类 &#xff08;2&#xff09;用DataLoader进行封装 3 .模型构建 4 .完善Runner类 5 .模型训练 可视化观察训练集损失和训练集loss变化情况 6 .模型评价 7.模型预测 …

能提升幸福感的好物品牌有哪些?一定不能错过的五款品牌推荐!

最近&#xff0c;是不是有很多小伙伴们都在为不知道该买些什么而感到纠结呢&#xff1f;其实&#xff0c;对于那些还在犹豫不决&#xff0c;不知道该选择什么商品的朋友们&#xff0c;完全不必过于焦虑。我最近在购物时发现了一些能够显著提升生活幸福感的好物品牌&#xff0c;…

Cyber​​Panel upgrademysqlstatus 远程命令执行漏洞(QVD-2024-44346)

0x01 产品简介 CyberPanel是一个开源的Web控制面板,它提供了一个用户友好的界面,用于管理网站、电子邮件、数据库、FTP账户等。CyberPanel旨在简化网站管理任务,使非技术用户也能轻松管理自己的在线资源。 0x02 漏洞概述 该漏洞源于upgrademysqlstatus接口未做身份验证和…

Lua 从基础入门到精通(非常详细)

目录 什么是 Lua&#xff1f; Lua 环境安装 Lua基本语法 注释 数据类型 nil&#xff08;空&#xff09; Boolean number&#xff08;数字&#xff09; string&#xff08;字符串&#xff09; function&#xff08;函数&#xff09; userdata thread table&#xff…

Java:数据结构-MapSet

搜索树 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子树也分别为…

全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验

在.NET 2025.1版本中&#xff0c;我们带来了巨大的期待功能&#xff0c;进一步简化了报告模板的开发过程。新功能包括通过添加链接报告页面、异步报告准备、HTML段落旋转、代码文本编辑器中的文本搜索、WebReport图像导出等&#xff0c;大幅提升用户体验。 FastReport .NET 是…