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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

消息会话—发送消息自动滚动到最底部

背景 在项目开发中&#xff0c;实现用户友好的输入交互是提升用户体验的关键之一。例如&#xff0c;在消息会话页面中&#xff0c;为了确保用户在发送新消息后页面能自动滚动到最底部&#xff0c;从而始终保持最新消息的可见性&#xff0c;需要实现自动滚动功能。这不仅提升了…

【教程】如何查看IEEE会员证书Membership Card

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、先打开以下网站&#xff0c;并登录你的账号&#xff1a; https://www.ieee.org/profile/myprofile/myprofile.html 2、如果你没有缴费注册会员&…

ENGAGE SHE连锁品牌盛启,寻找更多城市合伙人

在这个充满个性与品质追求的时代,饰品已悄然超越了单纯装饰的范畴,它成为了每个人独特个性的展现,是生活态度的鲜明宣言。自2021年成立以来,ENGAGE SHE凭借其“自在、自然、清新”的独特品牌风格,以及“简约、品质、设计”的核心理念,迅速在时尚界掀起了一股清新之风,赢得了无数…

Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具

关于Segugio Segugio是一款功能强大的恶意软件安全分析工具&#xff0c;该工具允许我们轻松分析恶意软件执行的关键步骤&#xff0c;并对其进行跟踪分析和安全审计。 Segugio允许执行和跟踪恶意软件感染过程中的关键步骤&#xff0c;其中包括从点击第一阶段到提取恶意软件的最…

中航资本:什么是主板创业板及科创板?主板创业板及科创板有什么区别?

什么是主板创业板及科创板&#xff1f; 主板、创业板和科创板都是股票商场的组成部分。 主板商场分为沪市主板和深市主板&#xff0c;首要服务与有安稳的盈利才华、较大的本钱规划和较强的商场竞争力的企业。 创业板首要服务于成长型、中小型、高新技术企业等&#xff0c;包…

1.3 面向对象 C++面试问题

1.3.1 简述一下什么是面向对象,面向对象与面向过程的区别 什么是面向对象 面向对象&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它通过将现实世界中的实体抽象为“对象”来组织代码。面向对象编程关注对象及其交互&#x…

酷睿 Ultra 200S核显相当于GTX 1050Ti?4核心表现出人意料

原文转载修改自&#xff08;更多互联网新闻/搞机小知识&#xff09;&#xff1a; 酷睿 Ultra 200S核显评测&#xff0c;GTX 1050Ti水平能玩3A 酷睿 Ultra 200S系列CPU是真没什么好聊的&#xff0c;不过作为陪衬&#xff0c;毫无存在感的Arc核显倒还算真的有点意思&#xff0c;…

netty之导入源码到idea

写在前面 本文看下如何导入netty源码到idea中。 1&#xff1a;环境准备 idea&#xff1a;IntelliJ IDEA 2021.1 (Ultimate Edition) jdk&#xff1a;1.8 netty&#xff1a;4.1.58.Final os&#xff1a;win102&#xff1a;开始 2.1&#xff1a;下载netty源码 点击。 2.2&…

k8s部署使用有状态服务statefulset部署eureka集群,需登录认证

一、构建eureka集群镜像 1、编写dockerfile文件&#xff0c;此处基础镜像为arm版本&#xff0c;eureka目录中文件内容&#xff1a;application-dev.yml、Dockerfile、eureka-server-1.0-SNAPSHOT.jar(添加登录认证模块&#xff0c;文章最后附上下载连接) FROM mdsol/java8-j…

Spring Boot驱动的厨艺社交平台设计与实现

5 系统实现 5.1食材分类管理 管理员管理食材分类&#xff0c;可以添加&#xff0c;修改&#xff0c;删除食材分类信息。下图就是食材分类管理页面。 图5.1 食材分类管理页面 5.2 用户信息管理 管理员管理用户信息&#xff0c;可以添加&#xff0c;修改&#xff0c;删除用户信…

《性能之巅:洞悉系统、企业与云计算》-应用程序-笔记

《性能之巅&#xff1a;洞悉系统、企业与云计算》第一章&#xff08;绪论&#xff09;和第二章&#xff08;方法&#xff09;的笔记&#xff0c;请参考Part 1&#xff0c;第三章&#xff08;操作系统&#xff09;的笔记&#xff0c;请参考Part 2&#xff0c;第四章&#xff08;…

Python小游戏14——雷霆战机

首先&#xff0c;你需要确保安装了Pygame库。如果你还没有安装&#xff0c;可以使用pip来安装&#xff1a; bash pip install pygame 代码如下&#xff1a; python import pygame import sys import random # 初始化Pygame pygame.init() # 设置屏幕大小 screen_width 800 scr…

传输层UDP

再谈端口号 端口号&#xff1a;标识了主机上进行通信的不同的应用程序 在TCP/IP 协议中我们用“源IP”"源端口号" “目的IP”“目的端口号” “协议号”五元组来标识一个通信 用netstat -n 查看 查看网络信息&#xff0c;我们有两种命令查看网络通信1.用netsta…

协同推理:模型切分算法;任务调度算法

目录 协同推理 模型切分算法 任务调度算法 优化目标 协同推理 协同推理算法涉及模型切分算法和任务调度算法,它们的主要优化目标包括性能、动态环境中推理延迟的鲁棒性和能耗等。以下是对这两类算法及其优化目标的详细阐述: 模型切分算法 模型切分算法旨在将复杂的深度…

【论文阅读】jina-embeddings-v3: Multilingual Embeddings With Task LoRA

#1024程序员节&#xff5c;征文# jina-embeddings-v3: Multilingual Embeddings With Task LoRA Abstract1 Introduction2 Related Work2.1 General Text Embeddings2.2 Multilingual Embedding Models2.3 Task-Specific Embedding Models 3 Model Architecture4 Training Meth…

虚拟现实在制造业中的应用

当你想到制造业中的虚拟现实技术时&#xff0c;你脑海中闪过的第一个念头是什么&#xff1f;从目前来看&#xff0c;只需几年时间&#xff0c;制造业就将离不开虚拟现实技术的帮助。实施虚拟现实应用对制造业来说都有诸多好处。通常情况下&#xff0c;制造设施都是由各种机器组…

【专题】关系模型的基本理论

1. 关系模型基本概念 1.1 基本术语 关系&#xff08;Relation&#xff09;&#xff1a;用于描述数据的一张二维表。 表中每一行称为元组&#xff1b; 表中每一列称为属性。 域&#xff08;Domain&#xff09;&#xff1a;指属性的取值范围。 候选键&#xff08;Candidate …

六,Linux基础环境搭建(CentOS7)- 安装HBase

Linux基础环境搭建&#xff08;CentOS7&#xff09;- 安装HBase 大家注意以下的环境搭建版本号&#xff0c;如果版本不匹配有可能出现问题&#xff01; 一、HBase下载及安装 HBase是一个分布式的、面向列的开源数据库&#xff0c;该技术来源于 Fay Chang 所撰写的Google论文…

YoloV8改进策略:Block改进|RFE模块|即插即用

摘要 论文介绍 本文介绍了一种基于YOLOv5的人脸检测方法&#xff0c;命名为YOLO-FaceV2。该方法旨在解决人脸检测中的尺度变化、简单与困难样本不平衡以及人脸遮挡等问题。通过引入一系列创新模块和损失函数&#xff0c;YOLO-FaceV2在WiderFace数据集上取得了优异的表现&…

分布式光伏电站电网接入的技术问题解析

1、电压波动与闪变 原因&#xff1a;光伏发电的输出功率受光照强度、温度等自然因素影响&#xff0c;具有间歇性和波动性。当光伏电站的输出功率发生快速变化时&#xff0c;会引起电网电压的波动和闪变。例如&#xff0c;在多云天气下&#xff0c;光照强度变化频繁&#xff0c…