蓝桥杯 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++语言特性兼容。

各种基本操作

初始化字符串

cpp 复制代码
#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()

cpp 复制代码
#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)

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

拼接字符串(+或append)

cpp 复制代码
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)

cpp 复制代码
#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)

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

提取子字符串(substr)

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

字符串比较(compare)

cpp 复制代码
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

cpp 复制代码
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';

例题讲解

相关推荐
YLCHUP1 分钟前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
LGL6030A7 分钟前
Java学习历程31——初识Spring Boot
java·spring boot·学习
xiaoye-duck11 分钟前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
思麟呀33 分钟前
背包DP(01背包+完全背包)
c++·算法
Zwawa1 小时前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
c语言·单片机·嵌入式
笑容掩饰我的失落2 小时前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
旖旎夜光2 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
Lansonli2 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
ShineWinsu2 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
budingxiaomoli2 小时前
Spring AOP
java·spring·java-ee