STL:string容器特性、定义、初始化、等号、取值、拼接、查找、替换、比较、字串、插入、删除
一.string的特性
string和char*类型字符串的对比:
- char是一个指针,string是一个类,string封装了char,管理这个字符串,是一个char*型的容器。
- string封装了很多实用的成员方法,查找find,拷贝copy,删除delete,替换replace,插入insert
- 不用考虑内存的释放和越界,string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。
二.string定义、初始化和assign函数
//初始化,assign成员函数
void test01() {string s1;//调用无参构造string s2(10, 'a');//10个astring s3("abcdefg");string s4(s3);// 调用拷贝构造cout << s1 << endl;s1.assign("hij");//string类提供成员方法赋值cout << s1 << endl;cout << s2 << endl;cout << s3 << endl;cout << s4 << endl;
}
三.等号操作符操作
string s1;
string s2("abcd");
s1 = "efg";
cout << s1 << endl;
s1 = s2;
cout << s1 << endl;
s1 = 'a';
cout << s1 << endl;
四.取值操作—[ ]操作符重载、at函数
string s1 = "abcdefg";
//重载[]号
for (int i = 0; i < s1.size(); i++) {cout << s1[i] << " ";
}
cout << endl;
//at函数
for (int i = 0; i < s1.size(); i++) {cout << s1.at(i) << " ";
}
cout << endl;
结果:
区别:
- [ ]方式:如果是访问越界,直接挂掉。
- at方式:访问越界,抛出out_of_range异常。
测试:
try {cout << s1[100] << endl;
}
catch (...) {cout << "越界!" << endl;
}
结果:
try {cout << s1.at(100) << endl;
}
catch (...) {cout << "越界!" << endl;
}
五.拼接操作
看完就懂,很简单!
string& operator+=(const string& str);//重载+=操作符
string& operator+=(const char* str);//重载+=操作符
string& operator+=(const char c);//重载+=操作符
string& append(const char* s);//把字符串s连接到当前字符串结尾
string& append(const char* s, int n);//把字符串前n个字符连接到当前字符串结尾
string& append(const string & s);//同operator+=()
string& append(const string& s, int pos, int n);//把字符串s中从pos位置开始的n个字符连接到当前字符串结尾
string& append(int n, char c);//在当前字符串结尾添加n个字符c
六.查找和替换
看完就懂,很简单!
//查找第一次出现位置int find(const string & str, int pos = 0)const;//查找str第一次出现位置,从pos开始查找int find(const char* s, int pos = 0) const;//查找str第一次出现位置,从pos开始查找int find(const char* s, int pos, int n) const;//从pos位置查找s的前n个字符第一次位置int find(const char c, int pos = 0) const;//查找字符c第一次出现位置
//查找最后一次出现位置int rfind(const string & str, int pos = npos)const;//查找str最后一次出现位置,从pos开始查找int rfind(const char* s, int pos = npos) const;//查找str最后一次出现位置,从pos开始查找int rfind(const char* s, int pos, int n) const;//从pos位置查找s的前n个字符最后一次位置int rfind(const char c, int pos = 0) const;//查找字符c最后一次出现位置
//替换string& replace(int pos, int n, const string & str);//替换从pos位置开始n个字符为字符串strstring& replace(int pos, int n, const char* s);//替换从pos位置开始n个字符为字符串s
七.比较操作
- compare函数在>时,返回1,<时返回-1,=时返回0;
- 比较区分大小写,比较时参考字典顺序,排序前面的越小;
- 大写A比小写a小;
int compare(const string & s)const;//与字符串s比较
int comapre(const char* s)const;//与字符串s比较
八.获取字串
string substr(int pos = 0; int n = npos)const;//返回由pos开始的n个字符组成的字符串
九.插入
string& insert(int pos, const char* s);//在pos位置插入字符串s
string& insert(int pos, const string & str);//在pos位置插入字符串str
string& insert(int pos, int n, char c);//在指定位置插入n个字符c
十.删除
string& erase(int pos, int n = npos);//删除从pos位置开始的n个字符串
十一.其他类型转string
需要添加:
#include <string>
类型转换:
string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (unsigned long long val);string to_string (float val);string to_string (double val);string to_string (long double val);
STL:string容器特性、定义、初始化、等号、取值、拼接、查找、替换、比较、字串、插入、删除相关推荐
- STL string容器 构造,查找,替换,拼接,比较,截取,插入删除
目录 构造函数 赋值操作 字符串拼接 查找替换 字符串比较 字符串存取 插入删除 字符串截取 构造函数 #include<iostream> using namespace std; # ...
- IOC容器特性注入第一篇:程序集反射查找
学习kooboo的框架发现它的注入容器方法比较特别,同样是利用MVC的注入点,但它是查找网站下面bin所有的DLL利用反射查找特性找到对应的服务注入到容器. 这样的好处很简单:完全可以不用关心IOC容 ...
- 海康摄像头取、录像机RTSP视频流的字串格式
海康摄像头取.录像机RTSP视频流的字串格式 主码流 rtsp://IP:554/h264/ch1/main/av_stream rtsp://IP:554/ISAPI/streaming/chann ...
- 数据结构专题(二):2.2单链表与顺序表,求元素个数,取值与查找
先了解一下头结点: 头结点本身并不存在链表里面的元素信息,我们用头结点的目的是方便以后将所有元素全部找起来. 如下代码分别对应求个数,取值,查找 注意:取值的函数第二个参数是位置 查找的函数第二个参数 ...
- 【C++编程语言】之string容器 基本概念 构造函数 赋值 拼接 查找 替换比较 插入 删除 子串获取
目录 1.string基本概念 2.string构造函数 3.string赋值操作 4.string字符串拼接 5.string查找和替换 6.string字符串比较 7.string单个字符的访问和 ...
- C++ 笔记(22)— STL string 类(字符串赋值、访问、拼接、查找、翻转、大小写转换)
1. 实例化和赋值 STL string #include <string> #include <iostream>int main () {using namespace s ...
- 关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)
android的Setting往往用PreferenceActivity来写的 我们在建立layout文件: <PreferenceScreen xmlns:android="http ...
- C/C++【顺序表】【初始化、赋值、打印、取值、查找、插入、删除、销毁、综合举例】
目录 1.运行截图 2.代码 1.运行截图 2.代码 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 100 #de ...
- [C++STL]string容器用法介绍
string构造函数 代码如下: #include <iostream> #include <string> using namespace std;void test01() ...
最新文章
- python编程案例教程书籍-清华大学出版社-图书详情-《Python开发案例教程》
- 广义相对论与量子力学的矛盾
- Docker中启动、终止和删除容器命令
- 无人机是计算机什么方面的应用,无人机测绘可以应用到哪些方面呢?
- C++ternary search三元搜索的实现算法(附完整源码)
- 为什么你没有选择xamarin?
- python总线 rabbitmq_python - 操作RabbitMQ
- Oracle中exists与in的效率探讨
- 耗时1周!精选22G超超超适合产品经理的《数据分析》学习资源,抓紧保存!限时2天删除~...
- WPF设置全局字体和字体嵌入
- [项目回顾]基于Redis的在线用户列表解决方案
- LINUX查看文件系统
- android toast居中显示_Android Toast 设置到屏幕中间以及其他自定义Toast的实现方法...
- 基于pymupdf的PDF与图片互转
- 暗影精灵 6 Plus 快速上手 大量游戏实测
- 计算机组成与体系结构(软件设计师考试)
- JAVA_OPTS讲解【转】
- 【并发编程】map 基本用法和常见错误以及如何实现线程安全的map类型
- VUE3 使用 Ant Design Vue 图标库的图标
- Linux系统软件安装 Jdk MySQL Tomcat