蓝桥杯 string

news2025/1/9 2:26:28

在这里插入图片描述

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);//输入buf
	string str(buf);//用buf来构造str
	printf("str=%s\n",str.c_str());//输出str
	return 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.coloradmin.cn/o/1214143.html

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

相关文章

Since Maven 3.8.1 http repositories are blocked

原因 高版本的maven不支持http的存储库。 解决方案 其实方法有好几种&#xff0c;比如降级maven版本至3.6.3(之前一直用的都是这个版本)&#xff0c;我选择了一种比较快(但不一定安全)的方式&#xff0c;因为3.6.3版本被我卸载了&#xff0c;这里直接修改idea的setting配置&…

【Java 进阶篇】JQuery 案例:下拉列表选中条目左右移动,打破选择的边界

在前端的舞台上&#xff0c;下拉列表是常见的用户交互元素&#xff0c;但有时候我们想要更多的交互体验。通过巧妙运用 JQuery&#xff0c;我们可以实现下拉列表中选中条目的左右移动功能&#xff0c;为用户提供更加灵活的选择方式。本篇博客将深入研究 JQuery 中实现这一功能的…

技巧篇:在Pycharm中配置集成Git

一、在Pycharm中配置集成Git 我们使用git需要先安装git工具&#xff0c;这里给出下载地址&#xff0c;下载后一路直接安装即可&#xff1a; https://git-for-windows.github.io/ 0. git中的一些常用词释义 Repository name&#xff1a; 仓库名称 Description(可选)&#xff1a;…

【数据结构】别跟我讲你不会冒泡排序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

旅拍摄影技巧澳大利亚、韩国旅行攻略

欢迎关注「苏南下」 在这里分享我的旅行和影像创作心得 刚刚在腾讯内部做了一场摄影分享课&#xff1a; 《旅拍摄影技巧&澳大利亚、韩国旅行攻略》 分享了早前去两个国家的一些旅行见闻和摄影心得。我发现&#xff1a;把自己学会的东西整理出来&#xff0c;再告诉给别人这件…

67基于matlab图像处理,包括颜色和亮度调整、翻转功能、空间滤波和去噪、频域滤波和去噪、噪声添加,形态学操作、边缘检测及示波器集成的GUI图像处理。

基于matlab图像处理&#xff0c;包括颜色和亮度调整、翻转功能、空间滤波和去噪、频域滤波和去噪、噪声添加&#xff0c;形态学操作、边缘检测及示波器集成的GUI图像处理。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 67 matlab图像处理图像降噪 (xiaohon…

cubemx工程更换同系列stm32芯片型号

cubemx工程更换stm32芯片型号 实验平台 软件&#xff1a;cubemx v6.10、vscode、MDK v5.27 旧型号芯片&#xff1a;stm32f103c8t6 新型号芯片&#xff1a;stm32f103ret6 步骤 1、复制stm32工程&#xff08;包含.ioc文件&#xff09;到另一个路径&#xff0c;新路径与原路径…

STM32F103C8T6第4天:串口实验(非中断和中断)、hc01蓝牙、esp8266WIFI、4g

1. 串口基本介绍&#xff08;332.36&#xff09; 常用函数介绍 串口发送/接收函数&#xff1a; HAL_UART_Transmit(); 串口发送数据&#xff0c;使用超时管理机制HAL_UART_Receive(); 串口接收数据&#xff0c;使用超时管理机制HAL_UART_Transmit_IT(); 串口中断模式发送HAL…

栈的三道oj【C++】

栈和队列的相关oj 最小栈思路解决代码 栈的压入弹出序列思路解决代码 逆波兰表达式思路&#xff1a;解决代码 这里就挑了三道题用来熟悉栈 最小栈 力扣链接 咱们已经是高贵的C使用者了&#xff0c;不用像C语言一样从头开始造轮子了 这里我们调用了stack后&#xff0c;就会发…

SMART PLC滑动平均值滤波(指针+FOR循环应用浮点数滤波)

SMART PLC滑动平均值滤波应用于单整型数据请查看下面文章链接: 【精选】S7-200 SMART PLC信号处理系列之滑动平均值滤波FB_smart200 滤波函数_RXXW_Dor的博客-CSDN博客文章浏览阅读1.5k次。PLC相关滤波算法,专栏有很多详细讲解这里不再赘述。滑动平均值滤波和算术平均值滤波…

halcon识别验证码,先训练后识别

识别验证码图片&#xff0c;使用halcon 21.05 下面代码识别准确率100% 目录 训练&#xff0c;图片打标签使用代码创建分类器&#xff1b;识别验证码&#xff0c;检验识别效果使用“助手”加载训练文件&#xff0c;加载训练分类器&#xff0c;察看收集的字符&#xff0c;训练识别…

创建数据透视表:根据表中一列作为分类的依据统计每个类别下不同子项数量cross_tab()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 创建数据透视表&#xff1a; 根据表中一列作为分类的依据 统计每个类别下不同子项数量 cross_tab() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd data{A:[a1,a2,a1,a2,a…

StyleGAN:彻底改变生成对抗网络的艺术

一、介绍 多年来&#xff0c;人工智能领域取得了显着的进步&#xff0c;其中最令人兴奋的领域之一是生成模型的发展。这些模型旨在生成与人类创作没有区别的内容&#xff0c;例如图像和文本。其中&#xff0c;StyleGAN&#xff08;即风格生成对抗网络&#xff09;因其创建高度逼…

数据库概率 期末复习

第一章 绪论 概述 数据 定义&#xff1a;描述事物的符号记录 地位&#xff1a;数据库中存储的基本对象 数据的语义&#xff1a;数据的含义&#xff0c;数据与其语义是不可分的 数据库 定义&#xff1a;长期储存在计算机内、有组织的、可共享的大量数据的集合 特点&…

JSP 购物商城系统eclipse定制开发mysql数据库BS模式java编程servlet

一、源码特点 java 购物商城系统是一套完善的web设计系统 系统采用serlvetdaobean 模式开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,eclipse开发&#xff0c;数…

从0开始学习JavaScript--JavaScript 异步编程

在现代的Web开发中&#xff0c;异步编程变得愈发重要。随着用户期望的提高和网络应用的复杂性增加&#xff0c;有效地处理异步操作成为构建高性能、交互丰富的应用的关键。JavaScript作为一门单线程的语言&#xff0c;采用异步机制来处理并发任务&#xff0c;确保用户体验不受阻…

计算机网络五层协议的体系结构

计算机网络中两个端系统之间的通信太复杂&#xff0c;因此把需要问题分而治之&#xff0c;通过把一次通信过程中涉及的所有问题分层归类来进行研究和处理 体系结构是抽象的&#xff0c;实现是真正在运行的软件和硬件 1.实体、协议、服务和服务访问点 协议必须把所有不利条件和…

php实现选择排序法

选择排序法是一种简单的排序算法&#xff0c;其基本思想是每次从未排序的部分中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;然后放到已排序部分的末尾。 以下是用PHP实现选择排序法的代码示例&#xff1a; <?php function selectionSort($arr) {$n count…

LeetCode - 26. 删除有序数组中的重复项 (C语言,快慢指针,配图)

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 ​​​​​​​ 思路一&#xff1a;快慢指针 在数组中&#xff0c;快慢指针就是两个整数下标&#xff0c;定义 fast 和 slow 这里我们从下标1开始&#xff08;下标0的数据就1个&#xff0c;没有重复项&…

RabbitMQ之延迟队列(万字总结,手把手教你学习延迟队列)

文章目录 一、延迟队列概念二、延迟队列使用场景三、RabbitMQ 中的 TTL1、队列设置 TTL2、消息设置 TTL3、两者的区别 四、整合 springboot1、添加依赖2、修改配置文件3、添加 Swagger 配置类 五、队列 TTL1、代码架构图2、配置文件类代码3、消息生产者代码4、消息消费者代码 六…