一.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容器特性、定义、初始化、等号、取值、拼接、查找、替换、比较、字串、插入、删除相关推荐

  1. STL string容器 构造,查找,替换,拼接,比较,截取,插入删除

    目录 构造函数 赋值操作​ 字符串拼接 查找替换 字符串比较 字符串存取 插入删除 字符串截取 构造函数 #include<iostream> using namespace std; # ...

  2. IOC容器特性注入第一篇:程序集反射查找

    学习kooboo的框架发现它的注入容器方法比较特别,同样是利用MVC的注入点,但它是查找网站下面bin所有的DLL利用反射查找特性找到对应的服务注入到容器. 这样的好处很简单:完全可以不用关心IOC容 ...

  3. 海康摄像头取、录像机RTSP视频流的字串格式

    海康摄像头取.录像机RTSP视频流的字串格式 主码流 rtsp://IP:554/h264/ch1/main/av_stream rtsp://IP:554/ISAPI/streaming/chann ...

  4. 数据结构专题(二):2.2单链表与顺序表,求元素个数,取值与查找

    先了解一下头结点: 头结点本身并不存在链表里面的元素信息,我们用头结点的目的是方便以后将所有元素全部找起来. 如下代码分别对应求个数,取值,查找 注意:取值的函数第二个参数是位置 查找的函数第二个参数 ...

  5. 【C++编程语言】之string容器 基本概念 构造函数 赋值 拼接 查找 替换比较 插入 删除 子串获取

    目录 1.string基本概念 2.string构造函数 3.string赋值操作 4.string字符串拼接 5.string查找和替换 6.string字符串比较 7.string单个字符的访问和 ...

  6. C++ 笔记(22)— STL string 类(字符串赋值、访问、拼接、查找、翻转、大小写转换)

    1. 实例化和赋值 STL string #include <string> #include <iostream>int main () {using namespace s ...

  7. 关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

    android的Setting往往用PreferenceActivity来写的 我们在建立layout文件: <PreferenceScreen xmlns:android="http ...

  8. C/C++【顺序表】【初始化、赋值、打印、取值、查找、插入、删除、销毁、综合举例】

    目录 1.运行截图 2.代码 1.运行截图 2.代码 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 100 #de ...

  9. [C++STL]string容器用法介绍

    string构造函数 代码如下: #include <iostream> #include <string> using namespace std;void test01() ...

最新文章

  1. python编程案例教程书籍-清华大学出版社-图书详情-《Python开发案例教程》
  2. 广义相对论与量子力学的矛盾
  3. Docker中启动、终止和删除容器命令
  4. 无人机是计算机什么方面的应用,无人机测绘可以应用到哪些方面呢?
  5. C++ternary search三元搜索的实现算法(附完整源码)
  6. 为什么你没有选择xamarin?
  7. python总线 rabbitmq_python - 操作RabbitMQ
  8. Oracle中exists与in的效率探讨
  9. 耗时1周!精选22G超超超适合产品经理的《数据分析》学习资源,抓紧保存!限时2天删除~...
  10. WPF设置全局字体和字体嵌入
  11. [项目回顾]基于Redis的在线用户列表解决方案
  12. LINUX查看文件系统
  13. android toast居中显示_Android Toast 设置到屏幕中间以及其他自定义Toast的实现方法...
  14. 基于pymupdf的PDF与图片互转
  15. 暗影精灵 6 Plus 快速上手 大量游戏实测
  16. 计算机组成与体系结构(软件设计师考试)
  17. JAVA_OPTS讲解【转】
  18. 【并发编程】map 基本用法和常见错误以及如何实现线程安全的map类型
  19. VUE3 使用 Ant Design Vue 图标库的图标
  20. Linux系统软件安装 Jdk MySQL Tomcat

热门文章

  1. 服务器1521端口被关闭,如何开启
  2. 合并两个递增的有序数组
  3. mysql中如何查看表结构
  4. pandas数据处理基础之标准化与标签数值化
  5. html5语义化标签及优点
  6. 计算机主机恢复上电检查,电脑故障维修判断指导总结
  7. java socket 长连接事例
  8. 写收货地址代码模块的思路整理——省市联动
  9. 父类引用和子类引用之间 的关系
  10. 一般英文(java)