C++ string类详解 适合零基础小白

本文详细介绍了C++中string类的各种操作,包括常量字符串构造、拷贝构造、输入(cin和getline)、修改(拼接、append、push_back)、substr函数、插入(迭代器和下标)、删除、替换以及查找(find、rfind等)方法,还有判空和字符串交换功能。
摘要由CSDN通过智能技术生成

目录

1.string 介绍

2. 初始化

3.输入

4.修改string对象

5.substr截取字符串

6.插入

7.删除

8.替换

9.查找

10.其它操作

1.string 介绍

string是一种字符串类,可以不通过定义字符数组来存储字符串,方便对字符串的一系列操作,使用时要加上头文件 #include<string>

2. 初始化

(1)常量字符串构造

string str("Hello");

(2)拷贝构造

string str("Hello");
string s(str);

(3)拷贝构造的第二种方式

string str("Hello");
string s = str;

(4)string(size_type n,char c) :创建一个包含 n 个c的 string 对象

string str(5,'a');
	
cout<<str;  //输出aaaaa

(5)部分拷贝构造

string str("hello");
string str2(str,2,3);  //下标2开始的3个字符
	
cout<<str2;  //输出llo

3.输入

string的输入方式不止一种,每一种都有细微差别

(1)cin 键盘输入,会跳过开头的空白,直到遇到下一个空白为止

string str;
	
cin>>str;  //输出abcd efg 
	
cout<<str;  //输出abcd 

(2)getline(cin,str) 读取一整行

string str;
	
getline(cin,str);  //输出 abcd efg 
	
cout<<str;  //输出 abcd efg

4.修改string对象

(1)通过'+'拼接两个对象

string s1("hello");
string s2("world");
string str=s1+s2;
	
cout<<str;  //输出helloworld

(2)通过append()在末尾添加

string str("hello");
str.append("world");
	
cout<<str;  //输出helloworld

(3)通过push_back()在末尾添加一个字符

string str("hello");
str.push_back('a');
	
cout<<str;  //输出helloa

5.substr截取字符串

 (1)substr(pos,n) 返回从pos下标开始的n个字符,pos默认为下标0;n默认为s.size()-pos

string str("hello");
string str2=str.substr(2,3);
	
cout<<str2;  //输出llo

(2)substr(pos)

string str("hello");
string str2=str.substr(2);
	
cout<<str2;  //输出llo 

6.插入

(1)迭代器位置插入单个字符

string str("hello");
str.insert(str.begin(),'a');
	
cout<<str;  //输出ahello

(2)迭代器位置插入多个字符

string str("hello");
str.insert(str.begin(),3,'a');  //插入3个a
	
cout<<str;  //输出aaahello

(3)在下标index前插入n个字符

string str("hello");
str.insert(2,3,'a');
	
cout<<str;  //输出heaaallo 

(4)下标index前插入一个常量字符串或者string对象

string str("hello");
string s("abab");
str.insert(2,s);  //下标2处插入s
	
cout<<str;  //输出heababllo 

(5)下标index前插入str中的从某一下标开始的n个字符

string str("hello");
string s("abab");
str.insert(2,s,0,2);  //下标2处插入s下标0开始的两个字符 
	
cout<<str;  //输出heabllo

7.删除

(1)erase()删除全部

string str("hello");
	
str.erase();  //清空 
	
cout<<str;  //输出空

(2)erase(pos,n) 删除下标pos开始的n个字符

string str("hello");
	
str.erase(2,2);  //下标2开始的两个字符 
	
cout<<str;  //输出heo 

(3)erase(迭代器)

string str("hello");
	
str.erase(str.begin());  //删除开头一个字符 
	
cout<<str;  //输出ello 

8.替换

(1)replace(pos,n,s)从下标pos开始删除n个字符,删除后在下标pos处插入s

string str("hello");
string s("aaa");
	
str.replace(2,2,s);  //从下标2开始删除2个字符,删除后在下标2处插入s
	
cout<<str;  //输出 heaaao

(2)replace(pos,n,s,a,b)从下标pos开始删除n个字符,删除后在下标pos处插入s中下标a开始的b个字符

string str("hello");
string s("aaa");
	
str.replace(2,2,s,2,1);  从下标2开始删除2个字符,删除后在下标2处插入s的下标2开始的1个字符 
	
cout<<str;  //输出 heao

9.查找

(1)find(s)返回s字符第一次出现的下标

string str("hello");
	
cout<<str.find("ll");  //输出2

(2)find(s,pos)从字符串的 pos 位置开始查找s,返回s字符第一次出现的下标

string str("hello");
	
cout<<str.find('l',3);  //输出3

(3)rfind() 与find()类似,不过是从后往前找

string str("hello");
	
cout<<str.rfind('l');  //输出3

(4)string.find_first_of() 在字符串中从指定位置开始向后(默认为索引 0 处)查找参数中任何一个字符首次出现的位置

string str("hello world people");
	
cout<<str.find_first_of("woooll");  //输出2

(5)find_last_of() 方法在字符串中查找参数中任何一个字符最后一次出现的位置(即从后往前找第一个)

string str("hello world people");
	
cout<<str.find_last_of("woooll");  //输出16

(6)string.find_first_not_of() 在字符串中查找第一个不包含在参数中的字符

string str("hello world people");
	
cout<<str.find_first_not_of("hwoooll");  //输出1

(7)find_last_not_of() 在字符串中查找最后一个不包含在参数中的字符

string str("hello world people");
	
cout<<str.find_last_not_of("hwoooll");  //输出17

10.其它操作

(1)empty()判空 ,若字符串为空,则返回真,否则返回假

string str("hello world people");
	
cout<<str.empty();  //输出0

(2)swap 函数交换两个字符串

string s1("hello");
string s2("world");
s1.swap(s2);
	
cout<<s1<<endl;  //输出world
cout<<s2<<endl;  //输出hello 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小瑾比个耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值