string用法总结

devtools/2024/9/25 4:34:36/

1.介绍

string是一个字符串类,和char类型类似,string是动态的,会自动调整大小,节省了不必要的空间。

1.初始化及定义

//头文件
#include<string>//1.
string str1; //生成空字符串//2.
string str2("123456789"); //生成"1234456789"的复制品 //3.
string str3("12345", 0, 3);//结果为"123" ,从0位置开始,长度为3//4.
string str4("123456", 5); //结果为"12345" ,长度为5//5.
string str5(5, '2'); //结果为"22222" ,构造5个字符'2'连接而成的字符串//6.
string str6(str2, 2); //结果为"3456789",截取第三个元素(2对应第三位)到最后

2.读入问题

读入字符,遇空格读入结束

string s;
cin >> s;

读入一行字符串(包括空格),遇回车结束

string s;
getline(cin, s);

注意getline(cin, s)会获取前一个输入的换行符,需要在前面添加读取换行符的语句。如:getchar() 或 cin.get()

例如错误读取

int n;
string s;
cin >> n;
getline(cin, s); //此时读取相当于读取了前一个回车字符

正确读取:

int n;
string s;
cin >> n;
getchar(); //cin.get()
getline(cin, s);//可正确读入下一行的输入

2.函数方法

1.插入

代码含义
s.push_back()在末尾插入
例:s.push_back('a')末尾插入一个字符a
s.insert(pos,ele)在pos位置插入元素
例:s.insert(s.begin(),'1')在第一个位置插入 '1'字符
s.append(str)在s字符串结尾添加str字符串
例:s.append("abc")在s字符串末尾添加字符串"abc"

2.删除

代码含义
erase(iterator p)删除字符串中p所指的字符
erase(iterator fir,iterator last)删除迭代器区间[fir,end)上所有字符
erase(pos,len)删除字符串从索引位置pos开始的len个字符
clear()删除字符串中所有字符

 3.字符替换

代码含义
s.replace(pos,n,str)把当前字符串从索引位置pos开始的n个字符替换为str
s.replace(pos,n,m,c)把当前字符串从索引位置pos开始的n个字符替换为m个字符c
s.replace(it1,it2,str)把当前字符串[it1,it2)区间替换为str,it1,it2为迭代器

4.大小写转换

代码含义
tolower(s[i])转换为小写
toupper(s[i])转换为大写

5.分割

代码含义
s.substr(pos,n)截取从pos索引开始的个字符

6.查找

代码含义
s.find(str,pos)在当前字符串的pos索引位置(默认为0)开始,查找子串str,返回找到的位置索引,-1表示查找不到子串

7.排序 

sort(s.begin(),s.end())

 

#include<string>
#include<iostream>
int main() {string s("dog bird chicken bird cat");
//字符串查找-----找到后返回首字母在字符串中的下标
// 1. 查找一个字符串cout << s.find("chicken") << endl;// 结果是:9// 2. 从下标为6开始找字符'i',返回找到的第一个i的下标cout << s.find('i',6) << endl;// 结果是:11// 3. 从字符串的末尾开始查找字符串,返回的还是首字母在字符串中的下标cout << s.rfind("chicken") << endl;// 结果是:9// 4. 从字符串的末尾开始查找字符cout << s.rfind('i') << endl;// 结果是:18因为是从末尾开始查找,所以返回第一次找到的字符// 5. 在该字符串中查找第一个属于字符串s的字符cout << s.find_first_of("13br98") << endl;// 结果是:4---b// 6. 在该字符串中查找第一个不属于字符串s的字符------先匹配dog,然后bird匹配不到,所以打印4cout << s.find_first_not_of("hello dog 2006") << endl; // 结果是:4cout << s.find_first_not_of("dog bird 2006") << endl;  // 结果是:9// 7. 在该字符串最后中查找第一个属于字符串s的字符cout << s.find_last_of("13r98") << endl;// 结果是:19// 8. 在该字符串最后中查找第一个不属于字符串s的字符------先匹配t--a---c,然后空格匹配不到,所以打印21cout << s.find_last_not_of("teac") << endl;// 结果是:21
}

 


http://www.ppmy.cn/devtools/88556.html

相关文章

C-V2X通信协议

C-V2X&#xff08;Cellular Vehicle to Everything&#xff0c;蜂窝车联网&#xff09;是一种利用蜂窝网络将车辆与一切事物连接的技术&#xff0c;它基于3G/4G/5G等蜂窝网通信技术演进形成&#xff0c;是当前车联网领域的主流技术标准之一。以下是对C-V2X通信协议的详细介绍&a…

UE5 UE4 使用python进行编辑器操作

使用UE 4.25以上版本后&#xff0c;python代码改动相对较少。 如下类库在4.20/21/22等早起版本不适用&#xff0c;建议查询UE的python文档 unreal.EditorAssetLibrary 1.获取当前选中的资源&#xff08;Content中&#xff09; # 获取当前选中的资产selected_assets unreal.E…

解读Solana流动性质押发展现状:市场格局的悄然转变

随着区块链技术的发展和去中心化金融&#xff08;DeFi&#xff09;生态系统的壮大&#xff0c;流动性质押&#xff08;Liquid Staking&#xff09;已经成为市场中的热门话题。尽管以太坊在这一领域占据了主导地位&#xff0c;但Solana也在快速追赶&#xff0c;并展现出其独特的…

《学会 SpringMVC 系列 · 消息转换器 MessageConverters》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

Java语聊大厅语音聊天小程序系统源码

语聊大厅语音聊天小程序&#xff1a;遇见声音的温暖角落 &#x1f3a7; 【初识语聊大厅&#xff0c;声音的奇妙邂逅】 在这个快节奏的时代&#xff0c;你是否渴望一份不被视线束缚的真诚交流&#xff1f;语聊大厅语音聊天小程序&#xff0c;就是你我之间最温柔的桥梁。轻轻一…

易媒助手:神似融媒宝的自媒体运营工具,新人送7天中级VIP

自媒体运营工具中还有一个易媒助手&#xff0c;功能与融媒宝、蚁小二类似&#xff0c;免费用户可发5个账号&#xff0c;三者同时用就可发15个账号了&#xff0c;所以今天也给大家介绍下&#xff1a; 易媒助手简介 易媒助手于2017年开发&#xff0c;致力于成为中国更优秀的新媒…

C#复习之类和对象

知识点一&#xff1a;什么是类 基本概念&#xff1a; 具有相同特征 具有相同行为 一类事物的抽象 类是对象的模板 可以通过类创建出对象 类的关键字 Class 知识点二&#xff1a;类声明在哪里 类一般声明在namespace语句块中 知识点三&#xff1a;类声明的语法 知识点四&#xf…

精通Perl代码优化:释放自定义优化技术的力量

精通Perl代码优化&#xff1a;释放自定义优化技术的力量 Perl是一种极其灵活的脚本语言&#xff0c;广泛应用于文本处理、系统管理任务和Web开发等领域。然而&#xff0c;随着应用的复杂性增加&#xff0c;代码的性能可能成为瓶颈。本文将深入探讨如何在Perl中实现自定义的代码…