最近在准备ccfcsp,于是学习了一下STL标准库的string类,在此记录。
作为STL类介绍的第一篇文章,首先简单介绍一下为什么要用STL,原因就是解决了一个问题之后,就不要对这个问题再来做重复的工作了,于是出现了模板。而宏定义由于不够安全,现在已经被STL取代。

引入 #include using std::string

构造函数

  • string name1(“aaa”);
  • string name2=“aaa”;
  • string name3(“aasdsadasdas”,9) 0-9个字符给name3
  • string name4(“sdasdas”,3,6) 最后一个参数6为最多复制多少个字符给name4,如果缺省则为从3后面的全部字符都给name4
  • string name5(‘d’,20) name5为20个字符d
  • 总结:string类的对象一般以()的形式初始化少用=,因为这样符合构造函数的形式。

运算符

  • =赋值运算
  • +连接运算
  • <、>等比较运算
  • 【】索引

成员函数

  • append 字符串连接 str.append(str1) str.append(str2,3,8) str2从3位置开始的八个字符进行连接
  • pushback 连接一个字符
  • compare str1.compare(str2) 返回类型为bool
  • clear 变为空字符串无返回值
  • empty 如果字符串为空返回true
  • find int pos1=str.find(str2,pos) 从0开始的pos位置开始找,否则从头开始。如果没有找到返回string::npos str.fing(ch,pos)查找一个字符
  • rfind 反向查找 str1.rfind(str2/ch,n)反向查找到正着开始数的弟n个字符
  • insert str1.insert(n1,str2,n2,n3)从str1的n1位置开始插入str2的n2位置开始的n3个字符
  • replace str1.replace(pos,n,str2,pos2,n2) replace(pos,n,ch)替换成字符
  • substr str1.substr(pos,n)
  • swap 交换函数
  • find_first_of int pos=str1.find_first_of(str3,n,m); n为从str1的哪个位置开始,m为str3的几个字符,参数可以为ch
  • find_first_not_of
  • find_last_of int pos=str1.find_first_of(str3);
  • find_last_not_of

迭代器

string::iterator it

  • it=str.begin(); 字符串的开始地址
  • it=str.end(); 字符串的最后一个地址在往后(字符串外的地址)

for(it=str.begin();it!=str.end();it++)

反向迭代器

string::reverse_iterator::it

  • rbegin()
  • rend()

此时it++实际为向左移动

补充如何实现字符串的反转

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main()
{string s = "hello";reverse(s.begin(),s.end());cout<<s<<endl;return 0;
}
#include <iostream>
#include <cstring>
using namespace std;int main()
{char s[]="hello";strrev(s);cout<<s<<endl;return 0;
}

C++STL之string类相关推荐

  1. STL 的string类怎么啦?

    STL 的string类怎么啦? 陈皓 前言 上个周末在和我的同学爬香山闲聊时,同学说到STL中的string类曾经让他备受折磨,几年前他开发一个系统前对string类还比较清楚,然后随着程序的复杂度 ...

  2. STL之string类:知其然,需知其所以然

    目录 前言 一,构造及初始化 1.1constuct类函数 1.2构造函数及其模拟实现 1.3拷贝构造及其模拟实现 1.4赋值操作符 1.5string类的swap接口 二,迭代器 2.1初识迭代器即 ...

  3. stl之string类用法详细总结

    标准c++中String类非常强大,合理使用,能极大提高编程效率,下面就对string类的用法进行总结. 头文件 #include<string> String类的构造函数如下: 1)   ...

  4. 【C++STL】string类

    文章目录 前言 使用 重新赋值 删除 比较 复制 查找子串 返回字串与交换 运算符重载 迭代器 算法 总结 前言 本节课讲的是STL(Standard Template Library 标准模板库) ...

  5. 《C++中STL引入和string类常用接口+自我实现-》

    前言 在这篇博客里将详细说说C++中的STL,通过这篇我们可以学习到什么是STL,以及STL的六大组件,STL具有的缺陷,最后看看string类及面试会让模拟实现string类的操作. 文章目录 前言 ...

  6. C++面试中string类的一种正确写法

    C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...

  7. STL中list类的自己简单实现

    前面写了STL中关于string类和vector类的简单实现,要想成体系学习的小伙伴可以看一看(48条消息) STL中vector类的自我简单实现_芜湖开冲-的博客-CSDN博客https://blo ...

  8. c++ - 第8节 - string类

    目录 1.为什么学习string类 1.1.C语言中的字符串 1.2.面试题需要 2.标准库中的string类 2.1.string类 2.2.string类的常用接口说明 2.3.string类练习 ...

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

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

最新文章

  1. add python3.7 to path是什么意思_一起读源码:为什么 loguru 的时间 rotation 不能只精确到天...
  2. mysql 绿色版远程访问_【Linux】MySQL解压版安装及允许远程访问
  3. hust sci列表
  4. 从ISA Server 2006升级到TMG2010
  5. 初学css list-style属性
  6. 公式编辑公式总是偏上怎么办?
  7. linux下json数据解析,Linux下使用jq简单解析json的方法
  8. python爬虫淘宝评论_Python爬取淘宝店铺和评论
  9. iOS强制切换横屏、竖屏
  10. matlab条形指纹拼接,matlab实现的两幅指纹图像的拼接
  11. 自动运维化tools篇1:用expect完成用户密码的批量修改
  12. 千万千万不要运行的Linux命令
  13. 变频器按启动没反应_ABB变频器启动无反应维修那些事
  14. springboot球类运动教学网站的设计与实现271611
  15. [ASP.NET]基于asp.net的客户信息反馈系统
  16. Remote-SSH 安装教程
  17. 计算机安装Hp1005打印机,hp1005打印机驱动安装使用方法 常见问题解答分享
  18. html的国际标准智商测试,国际标准智商测试题
  19. oracle auto failover,dg设置auto failover
  20. 任务卡_05-数据库_数据库基础

热门文章

  1. 通用人工智能最新突破!一个Transformer搞定一切
  2. 华为5500v3多路径linux6,使用Linux自带多路径multipath
  3. 牛客 13134 牛牛的数列
  4. vue中事件监听watch
  5. 标品与非标品的定义 标品与非标品的区别,以及标品与非标品直通车运营方案
  6. bitwise ssh client的使用
  7. neutron-server.service启动失败显示代理报错http://controller:9696/v2.0/agents.json
  8. unity屏幕后处理效果
  9. 基于WIFI信号的呼吸和心率检测(论文总结)
  10. 为什么别人可以年薪百万?