C++之字符串处理函数

news2025/8/3 5:12:39

字符串操作函数

C语言中几个处理字符串的函数都是以str开头,处理时默认遇到\0结束操作

这些字符串函数都使用了下面这个头文件:
#include <string.h>

测量字符串的长度strlen

函数原型

size_t strlen(const char *s)
//s指需要测量的字符串首元素地址

注意,测量时不计入\0

代码

#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
	char a[]="hello";
	char b[]="he\0llo";
	cout<<strlen(a)<<endl;
	cout<<strlen(b)<<endl;
	return 0;
}

运行结果
在这里插入图片描述

字符串拷贝函数strcpy

函数原型

char* strcpy(char* dest,const char* src);
char* strncpy(char* dest,const char * src,size_t n);

说明
dest:目的空间地址(空间容量注意准备充足)
souce:原字符串首元素地址
strncpy函数优先考虑\0,接着考虑拷贝字节个数。即如果还没拷贝够n个就遇到\0则可以结束.

代码1

#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
    //size_t strlen(const char *s);
	char a[128]="";
	char x[]="";

	char b[]="hello world";
	char c[]="hello wor\0ld";
	cout<<strcpy(a,b)<<endl;
	cout<<strcpy(a,c)<<endl;
	cout<<strcpy(x,b)<<endl;//内存污染
	/*
	char x[]="";默认隐含了\0,因此x被初始化为1字节空间,因此b拷贝到x会溢出,造成内存污染
	*/
	return 0;
}

运行结果
在这里插入图片描述
代码2

#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
    //size_t strlen(const char *s);
	char a[128]="";
	char x[]="";

	char b[]="hello world";
	char c[]="hello wor\0ld";
    cout<<strncpy(a,b,7)<<endl;
    cout<<strncpy(a,c,12)<<endl;

	return 0;
}

运行结果
在这里插入图片描述

字符串追加函数strcat

函数原型

char *strcat(char *dest, const char *src)

说明
把stc追加到dest尾部.

#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
    char h[128]="hello ";
    char w[]="World";
    cout<<strcat(h,w)<<endl;
    return 0;
}

运行结果
在这里插入图片描述

字符串比较strcmp

函数原型

int strcmp(const char *s1,const char *s2);
int strncmp(const char *s1,const char *s2,size_t n);

说明:
返回值
>0  则s1字符串 >s2 字符串
<0  则s1字符串 <s2 字符串
==0  则s1字符串 ==s2 字符串

参数n则表示最多比较前n个字符
字符串比较的是ASCII码值,如果已确定某字符大于另一个则不会比较后续字符.

代码

#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
	
	char a[128]="";
	char b[128]="";
	cout<<"请输入第一个字符串";
	cin>>a;
	cout<<"请输入第二个字符串";
    cin>>b;
	
	cout<<a<<endl;
	cout<<b<<endl;
	if(strcmp(a,b)>0)
	{	
		
		cout<<a<<"大于"<<b<<endl;
	}
	else if(strcmp(a,b)<0)
	{
		cout<<a<<"小于"<<b<<endl;
	}
	else
	{
		cout<<a<<"等于"<<b<<endl;
	}

    return 0;
}

运行结果
在这里插入图片描述
代码2

#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
	
	char a[128]="";
	char b[128]="";
	cout<<"请输入第一个字符串";
	cin>>a;
	cout<<"请输入第二个字符串";
    cin>>b;
	
	cout<<a<<endl;
	cout<<b<<endl;
	if(strncmp(a,b,1)>0)
	{	
		
		cout<<a<<"大于"<<b<<endl;
	}
	else if(strncmp(a,b,1)<0)
	{
		cout<<a<<"小于"<<b<<endl;
	}
	else
	{
		cout<<a<<"等于"<<b<<endl;
	}

    return 0;
}

运行结果
在这里插入图片描述

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

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

相关文章

建筑设计中,如何快速获得场地的等高线图?

等高线指的是地形图上高程相等的相邻各点所连成的闭合曲线。把地面上海拔高度相同的点连成的闭合曲线&#xff0c;并垂直投影到一个水平面上&#xff0c;并按比例缩绘在图纸上&#xff0c;就得到等高线。&#xff08;来自百度百科的定义&#xff09; 图新地球软件&#xff0c;…

YOLOS

太多了 yolo v x 现在又s了 Transformer能否从纯序列到序列的角度执行2D目标级识别&#xff0c;而对2D空间结构知之甚少&#xff1f;为了回答这个问题&#xff0c;今天就展示了“You Only Look at One Sequence” (YOLOS)&#xff0c;这是一系列基于朴素视觉变换器的目标检测模…

磨金石教育摄影技能干货分享|古风人像修图与调色技巧

上一篇文章我们介绍了古风人像的拍摄技巧&#xff0c;这期我们再来了解一下后期修图与调色的技巧。 一、修 饰 皮 肤 首先我们把拍好的照片拖到PS里。 1、ctrlj复制一个图层。然后选择污点修复画笔把脸部瑕疵去掉&#xff0c;嘴巴部位使用的是修复画笔。这样我们可以看到人像…

pyenv的安装与简单使用

一、pyenv是什么&#xff1f; pyenv 是 python 的 多环境管理 工具&#xff0c;可以安装多个版本的 python&#xff0c;并为 全局 或 单个应用 设置指定版本 二、pyenv的安装 2.1 下载 pyenv 压缩包 压缩包下载地址&#xff1a;https://github.com/pyenv-win/pyenv-win#rea…

测开 - 自动化测试selenium(WebDriver API) - 细节狂魔

文章目录回顾什么是驱动&#xff1f;驱动的工作原理是什么&#xff1f;一个简单的 Web自动化 演示1、定位元素的方法 - 只介绍两种最常使用的2、元素的操作3、等待3.1、强制等待强制等待的优点 && 缺点3.2、隐式等待隐式等待的优缺点3.3、显示等待显示等待的优缺点&…

五种方法帮你解决电脑内存占用大的问题

有用户反映自己的电脑什么都没开&#xff0c;但是运行内存显示占用90%以上&#xff0c;这是什么情况&#xff1f;运行内存占用大&#xff0c;直接影响了用户的使用体验&#xff0c;下面小编就给大家分享五个解决电脑内存占用大的办法吧。 方法一&#xff1a; 1、右键【我的电脑…

C++ —— 模拟实现vector和迭代器失效

目录 1.成员变量的设计 2.迭代器以及接口设计 3.容量接口 4.reserve的设计 5.resize的设计 6.尾插尾删的设计 7.构造、析构函数 8.运算符重载 9.insert接口设计与迭代器失效 10.erase的设计和迭代器失效 11.双层深拷贝问题 12.完整代码 1.成员变量的设计 成员变量…

Stream流、FiLe和IO流、

package com.streamdemo; import java.util.ArrayList; import java.util.List; /*** 体验Stream流** 创建一个集合&#xff0c;存储多个字符串元素* "张三丰","张无忌","张翠山","王二麻子","张良","谢广坤"** 把…

【Java八股文总结】之面试题(一)

文章目录面试题1、说一下ArrayList和LinkedList区别2、说一下HashMap的Put方法3、ThreadLocal4、说一下JVM中&#xff0c;哪些是共享区&#xff0c;哪些可以作为gc root?5、如何排查项目中遇到的JVM问题?6、如何查看线程死锁?7、线程之间如何进行通讯的?8、介绍一下Spring&…

分布式全局唯一 ID生成器(百度UidGenerator)

文章目录为什么要使用全局ID生成器&#xff1f;使用UUID作为主键&#xff1f;使用数据库主键自增&#xff1f;UidGenerator简介雪花算法snowflakeSpringBoot整合百度UidGenerator为什么要使用全局ID生成器&#xff1f; 在分库分表中必定会面临着一个问题&#xff0c; 就是如何…

steam搬砖项目怎么样

大家好&#xff0c;我是阿阳 Steam搬砖就是利用一些技巧和经验去Steam购买一些低价格商品&#xff0c;我们低价拿到道具&#xff0c;再以低于国内市场价的价格销售&#xff0c;保持了发货的稳定性和速度&#xff0c;赚取了利润。 如果是以前有人给我安利这种看着就不靠谱的赚…

scrapy 使用FilesPipeline和ImagesPipeline

除了爬取文本&#xff0c;我们可能还需要下载文件、视频、图片、压缩包等&#xff0c;这也是一些常见的需求。scrapy提供了FilesPipeline和ImagesPipeline&#xff0c;专门用于下载普通文件及图片。两者的使用方法也十分简单&#xff0c;首先看下FilesPipeline的使用方式。 Fi…

基于Netty的高性能RPC框架(分布式缓存、雪花算法、幂等性)

文章目录前言介绍1. 服务提供2. 安全策略3. 设计模式亮点1. 信息摘要算法的应用2. 心跳机制3. SPI 机制4. IO 异步非阻塞5. RNF 协议快速开始1.依赖1.1 直接引入1.2 maven引入2. 启动 Nacos3. 提供接口4. 启动服务5. 启动客户端5. 额外配置5.1 配置文件5.2 日志配置6. 场景应用…

AxGlyph矢量绘图软件 | 绘图软件

文章目录AxGlyph矢量绘图软件安装教程所见即所得滚动式符号面板&#xff0c;多底色、面板符号定制和分页顺序调整格式化图形&#xff0c;通过节点控制可获取丰富的变形支持自由矢量画笔、混合矢量路径和矢量漫水填充整合精简版的AxMath*&#xff0c;可方便的在图形中嵌入数学公…

Python的PyQt框架的使用-构建环境篇

Python的PyQt框架的使用-构建环境篇一、前言二、安装PyQt三、使用第三方开发工具一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的使用。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) Python起初是一…

SpringBoot-Eureka-xstream-rce漏洞复现

SpringBoot-Eureka-xstream-rce actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类&#xff1a;原生端点和用户自定义扩展端点&#xff0c;原生端点主要有&#xff1a; 漏洞利用 1.利用trace&#xff0c;获取认证信息&#…

虚拟内存初探CSAPP

VM as a tool for caching CMU213-CSAPP-Virtual-Memory-Concepts | GreenHatHGのBlog 理解这个概念&#xff0c;就是说&#xff0c;VM是看作是独立与CPU和主存之外的disk&#xff0c;然后主存看成是这个虚拟地址数列的cache (DRAM就是物理的主存&#xff09; 重新用自己的…

大规模异构图召回在美团到店推荐广告的应用

总第530篇2022年 第047篇美团到店推荐广告团队在图神经网络的长期落地实践中&#xff0c;思考分析了场景的特点与挑战&#xff0c;针对性地进行了模型设计&#xff0c;并通过大规模训练工具及线上部署优化多次成功落地&#xff0c;带来了线上收入提升。本文主要介绍了大规模图召…

nginx--源码分析 array(实现动态数组)

1.基本数据结构 typedef struct {void *elts;ngx_uint_t nelts;size_t size;ngx_uint_t nalloc;ngx_pool_t *pool; } ngx_array_t;结构成员定义 1.void* elts &#xff1a;数组的内存位置&#xff0c; 即数组首地址 采用void* 近似使用模板技术,可以通过类…

npm配置taobao镜像及nrm快速换源工具介绍

文章目录npm配置淘宝镜像1 为什么默认源下载很慢&#xff1f;2 淘宝npm镜像服务器3 切换npm的下包镜像源4 nrmnpm配置淘宝镜像 1 为什么默认源下载很慢&#xff1f; 在使用npm下包的时候&#xff0c;默认从国外的https://registry.npmjs.orgl服务器进行下载&#xff0c;此时&…