蓝桥杯 string

在这里插入图片描述

string简介

string是C++标准库的重要组成部分,主要用于字符串处理。
使用string库需要在头文件中包括该库 #include< string>
string与char[]不同,string实现了高度的封装,可以很方便地完
成各种字符串的操作,比如拼接、截取、匹配等等。

string声明与初始化

1)字符串管理:string封装了字符串的存储和管理。它自动处理字符串的内存分配和释放,避免
了手动管理内存的麻烦。
2)动态大小调整:string可以根据需要自动调整字符串的大小。在添加或删除字符时,string会
自动调整内部的存储容量,确保足够的空间来容纳字符串。
3)安全性:string提供了一些方法来确保字符串的安全性。例如,它提供了越界访问检查,以避免访问超出字符串范围的字符。
4)迭代器支持:string支持迭代器,可以使用迭代器遍历字符串中的字符,进行字符级别的操作。
5)兼容性:string是C++标准库的一部分,因此在C++中广泛使用,并且与其他标准库组件和C++语言特性兼容。

各种基本操作

初始化字符串

#include<iostream>
#include<string>
using namespace std;
int main(){//声明并初始化一个空字符串string str1; //使用字符串字面量初始化字符串string str2 ="Hello,World!";//使用另一个string对象初始化字符串string str3=str2;//使用部分字符串初始化字符串string str4 = str2.substr(0,5);//使用字符数组初始化字符串const char* charArray="Hello";string str5(charArray);//使用重复的字符初始化字符串string str6(5,'A');//输出字符串内容cout<<"str1:"<<str1<<endl;cout<<"str2:"<<str2<<endl;cout<<"str3:"<<str3<<endl;cout<<"str4:"<<str4<<endl;cout<<"str5:"<<str5<<endl;cout<<"str6:"<<str6<<endl;return 0;
}

在这里插入图片描述
还有一种读入字符串的方式:getline(cin,s);

函数c_str()

#include<bits/stdc++.h>
using namespace std;
int main()
{char buf[100];//临时变量,用于输入scanf("%s",buf);//输入bufstring str(buf);//用buf来构造strprintf("str=%s\n",str.c_str());//输出strreturn 0; 
}

在这里插入图片描述
在C++中,string类提供了一个成员函数c_str(),
用于返回一个指向以空字符结尾的C风格字符串(即const char*类型)。
在进行printf输出时,需要将string转换为C风格的字符串进行输出。

获取字符串长度(length/size)

string str="Hello,World!";
int length=str.length();//或者int length=str.size();
cout<<"Length:"<<length<<endl 

拼接字符串(+或append)

string str1="Hello"
string str2="World!"
string result=str1+","+str2;//使用+运算符
string result=str1.append(",").append(str2);//使用append()函数
cout<<"Result 1:"<<result1<<endl;
cout<<"Result 2:"<<result2<<endl; 

字符串查找(find)

#include<bits/stdc++.h>
using namespace std;
int main()
{
string str="Hello,World";
size_t pos =str.find("World");//查找子字符串位置
if(pos!=string::npos){cout<<"found position "<<pos<<endl;
} else{cout<<"position not found"<<endl;
}
return 0;
}

在这里插入图片描述

字符串替换(replace)

string str="Hello,World!";
str.replace(7,5,"Universe");//替换子字符串
cout<<"Result: "<<str<<endl; 

在这里插入图片描述

提取子字符串(substr)

string str="Hello,World!";
string substr=str.substr(7,5);//提取子字符串
cout<<"Substring: "<<substr<<endl; 

在这里插入图片描述

字符串比较(compare)

string str1="Hello";
string str2="World";
int result=str1.compare(str2);//比较字符串
if(result==0){cout<<"String are equal."<<endl;
} else if(result<0){cout<<"string 1 is less than string 2."<<endl;
}else{cout<<"string 1 is greater than string 2"<<endl;
}

在这里插入图片描述
string重载了不等号,所以可以直接使用s1<s2的方式
来比较string的大小,比较的规则是按照字典序大小进行比较。
字典序的比较方法是从小到大一个一个比较,一旦遇到不
相等的字符就确定大小关系。
在这里插入图片描述

遍历string

string s="Hello";
for(int i=0;i<s.length();i++)cout<<s[i];
cout<<'\n';
for(auto i:s){cout<<i;i='a';//此处的修改无效,因为这个i是拷贝出来的,而不是引用S的 
}
cout<<'\n';
//此时s="Hello"
for(auto &i:s){cout<<i;i='a';//此处修改会改变s的字符值 
} 
cout<<'\n';
//此时s="aaaaa"
cout<<s<<'\n';

例题讲解

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis的发布和订阅

Redis发布订阅(pub/sub)是一种消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 Redis客户端可以订阅任意数量的频道。 举例说明&#xff0c;我们创建两个Redis客户端&#xff1a; 客户端1订阅channel1频道&#xff1a; 客户端2给channel1发送消…

二维码智慧门牌管理系统升级解决方案:流量监控引领服务卓越

文章目录 前言一、流量监控功能概述二、流量监控的益处三、应用案例和成功故事四、实施和支持 前言 随着科技的不断发展&#xff0c;二维码智慧门牌管理系统在其便捷高效的管理方式下&#xff0c;深受广大用户喜爱。为了更好地满足用户需求&#xff0c;提升服务质量&#xff0…

cadence virtuoso layout drc error

问题&#xff1a; The BORDER layer must enclose all chip layout patterns, which all chip layout patterns include seal ring if seal ring has been added by designers. This rule checking includes the layers of DNW,AA,NW,NC,PC,MVN, MVP,DG,GT,SN,SP,SAB,CT,M1,V1…

Page分页records有数据,但是total=0,解决办法

Page分页records有数据&#xff0c;但是total0&#xff0c;解决办法 问题&#xff1a;程序运行起来后&#xff0c;后端接收前端传来的搜索请求信息正常&#xff0c;但无法在前端正确反馈信息&#xff0c;通过在后端排查发现total一直等于零&#xff0c;但数据库中有数据&#x…

给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计一算法:

1.给出n个学生的考试成绩表&#xff0c;每条信息由姓名与分数组成&#xff0c;试设计一个算法: (1)按分数高低次序&#xff0c;打印出每个学生在考试中获得的名次&#xff0c;分数相同的为同一名次。 (2)按名次列出每个学生的姓名与分数。 学生的考试成绩通过键盘输入数据建立…

JVM查看内存新生代老年代回收情况,排查oom

jstat 命令 jstat - [-t] [-h] [ []] option&#xff1a;我们经常使用的选项有gc、gcutil vmid&#xff1a;java进程id interval&#xff1a;间隔时间&#xff0c;单位为毫秒 count&#xff1a;打印次数 每秒打印一次 jstat -gc 9162 1000S0C:年轻代第一个survivor的容量…

Godot4.1 GDExtension 配置VisualStudio方法梳理以及快捷配置工具

写在最前 本篇教程基于之前教程&#xff0c;并且默认为Windows10&#xff0c;64位&#xff0c;Godot版本4.1.3如果遇到任何问题&#xff0c;欢迎及时提出&#xff0c;如果配置成功了请点个赞&#xff0c;球球啦。 之前教程 https://blog.csdn.net/qq_31805591/article/detai…

《009.SpringBoot之汽车租赁系统》

《009.SpringBoot之汽车租赁系统》 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatisPlus; 前台&#xff1a;Layuivue; [2]功能模块展示&#xff1a; 前端门户 1.登录&a…

构建新一代的K8s原生Java微服务+Quarkus实战

系列文章目录 送书第一期 《用户画像&#xff1a;平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

了解一下知识付费系统的开发流程和关键技术点

知识付费系统的开发既涉及到前端用户体验&#xff0c;又需要强大的后端支持和复杂的付费逻辑。在这篇文章中&#xff0c;我们将深入探讨知识付费系统的开发流程和关键技术点&#xff0c;并提供一些相关的技术代码示例。 1. 需求分析和规划&#xff1a; 在着手开发知识付费系…

基于Vue+SpringBoot的天然气工程业务管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程…

设计测试用例的6种基本原则

设计测试用例的基本原则&#xff0c;对于软件测试非常重要&#xff0c;这些原则有助于设计出高质量、全面、有效的测试用例&#xff0c;从而提高软件测试的效率和准确性&#xff0c;维护软件的质量和稳定。如果在设计用例时没有遵循基本原则&#xff0c;这会影响用例的全面性、…