C++常用STL容器--string
2021/12/22 12:19:51
本文主要是介绍C++常用STL容器--string,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++常用STL容器--string
- 特点
- string构造函数
- string赋值
- string字符串拼接
- string字符串查找、替换
- string字符串比较
- string字符获取
- string 插入和删除
- string 截取子串
string是C++风格的字符串,但本质上是一个类
特点
- string类内部封装了很多成员方法,例如:查找find,拷贝cope,删除delete,替换replace
- string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责
string构造函数
函数原型
-
string();
//创建一个空的字符串 -
string(const char*s);
//使用字符串s初始化 -
string(const string& str);
//使用一个string对象初始化另一个string对象 -
string(int n,char c)
;//使用n个字符c初始化
示例
//1、默认构造 string s1; //2、使用字符串str初始化 const char* str = "hello C++"; string s2(str); //3、使用一个string对象初始化另一个string对象 string s3(s2); //4、使用5个字符a初始化,结果为"aaaaa" string s4(5, 'a');
string赋值
函数原型
=
.assign(str);
//字符串赋值.assign(str,n);
//将str的前n个字符赋给当前字符串.assign(n,elem);
//用n个elem字符赋给当前字符串
示例
//1、将char*类型字符串赋值给当前字符串 string str1 = "hello world"; //2、string变量赋值 string str2 = str1; //3、单个字符赋值 string str3='a'; //4、使用assign进行字符串赋值 string str4.assign("hello C++"); //5、将字符串的前5个字符赋给当前字符串,str5结果为"hello" string str5.assign("hello C++",5); //6、使用assign进行字符串赋值 strig str6.assign(str5); //7、用5个字符赋给当前字符串,str7结果为"wwwww" string str7.assign(5,'w');
string字符串拼接
函数原型
+=
//string变量拼接.append(str);
//字符串拼接.append(str,n);
//将str的前n个字符赋给当前字符串
示例
//1、char*类型字符串拼接 string str1 = "hello"; str1 += "C++"; //2、string变量拼接 string str2 = "python"; str1 += str2; //3、字符串拼接 string str3 = "i"; str3.append("love"); //4、将字符串的前3个字符赋给当前字符串,str3结果为i love c++" str3.append("c++python",3); //相当于str3.append("c++python",0,3) //5、string变量拼接 str3.append(str2);
string字符串查找、替换
函数原型
.find(pos)
//查找方法.replace(pos,y,str)
//替换方法
示例
//1、查找 string str1 = "abcdefgde"; int pos = str1.find("de"); //从左往右找,结果为3 pos = str1.rfind("de"); //从右往左找,结果为7 //2、替换 str1.replace(1,3,"1111"); //从1号位置起 3个字符替换为“1111”
注意:
- find查找是从左往右,rfind从右往左
- find找到字符串后返回查找的第一个字符位置,找不到返回-1
- replace在替换时,要指定从哪个位置其,多少个字符,替换成什么样的字符串
string字符串比较
函数原型
.compare(str2)
实际上是将两个字符串中的字母的ascll值逐个对比,主要用于比较是否相等
示例
string str1 = "abc"; string str2 = "bbc"; if (str1.compare(str2) == 0){ cout << "str1等于str2" << endl; } else if (str1.compare(str2) > 0){ cout << "str1大于str2" << endl; } else{ cout << "str1小于str2" << endl; }
string字符获取
函数原型
[n]
.at(n)
两中方式均可以获取单个字符
示例
string str = "hello"; //1、通过[]访问单个字符,结果为"h e l l o" for (int i=0; i<str.size(); i++){ cout << str[1] << " "; } //2、通过at方式访问单个字符,结果为"h e l l o" for (int i=0; i<str.size(); i++){ cout << str.at(i) << " "; } //通过[]修改单个字符,结果为xello str[0] = 'x'; //通过at修改单个字符,结果为xyllo str.at(1) = 'y';
string 插入和删除
函数原型
插入方法:
.insert(pos,str)
//在pos位置插入str字符串
.insert(pos,n,char c)
//在pos位置插入n个字符c
删除方法:
.erase(pos,npos)
//删除从pos位置到npos位置的字符串
示例
string str = "hello"; //插入,结果为"h111ello" str.insert(1,"111"); //删除,结果为"hello" str.erase(1,3);
string 截取子串
函数原型
.substr(pos,npos)
//获取从pos位置到 npos-1位置的字符串
示例
string str = "abcdef"; //截取,结果为“bcd” subStr = str.substr(1,3); //实用操作,从邮件地址中获取 用户名信息 string email = "zhangsan@foxmail.com"; int pos = email.find("@"); //获取@符号位置,结果为8 string userName = email.substr(0,pos); //获取从0到7的字符串
这篇关于C++常用STL容器--string的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用