【C++初阶】第8课—标准模板库STL(string_2)

文章目录

  • [1. string类对象遍历操作](#1. string类对象遍历操作)
    • [1.1 标准库中的成员函数begin( )和end( )](#1.1 标准库中的成员函数begin( )和end( ))
    • [1.2 标准库中的成员函数rbegin( )和rend( )](#1.2 标准库中的成员函数rbegin( )和rend( ))
    • [1.3 C++11引入的4个标准库中的成员函数](#1.3 C++11引入的4个标准库中的成员函数)
  • [2. string类对象的访问](#2. string类对象的访问)
    • [2.1 operator 运算符重载访问字符串字符](#2.1 operator[ ]运算符重载访问字符串字符)
    • [2.2 公有成员函数at访问字符](#2.2 公有成员函数at访问字符)
    • [2.3 公有成员函数back()和front()访问字符](#2.3 公有成员函数back()和front()访问字符)
  • [3. string类对象的修改操作](#3. string类对象的修改操作)
    • [3.1 运算符重载operator+=追加字符串/字符](#3.1 运算符重载operator+=追加字符串/字符)
    • [3.2 push_back尾插字符c](#3.2 push_back尾插字符c)
    • [3.3 append追加字符串](#3.3 append追加字符串)
    • [3.4 尾删字符pop_back](#3.4 尾删字符pop_back)
    • [3.5 assign替换string类对象内容(全部替换)](#3.5 assign替换string类对象内容(全部替换))
    • [3.6 replace替换string类对象内容(部分替换)](#3.6 replace替换string类对象内容(部分替换))
    • [3.7 insert插入字符串](#3.7 insert插入字符串)
    • [3.8 返回值npos](#3.8 返回值npos)
    • [3.9 erase删除部分字符](#3.9 erase删除部分字符)
    • [3.10 swap交换函数](#3.10 swap交换函数)
  • [4 练习](#4 练习)
    • [4.1 练习题:反转字母](#4.1 练习题:反转字母)
    • [4.2 练习题:找字符串中第一个只出现一次的字符](#4.2 练习题:找字符串中第一个只出现一次的字符)
    • [4.3 "整数"字符串相加](#4.3 "整数"字符串相加)

1. string类对象遍历操作


1.1 标准库中的成员函数begin( )和end( )

  • begin()和end()听起来就是访问字符串首尾的字符,不过end指向字符串末尾'\0'



1.2 标准库中的成员函数rbegin( )和rend( )

  • rbegin()和rend()用来逆序字符串再合适不过了


1.3 C++11引入的4个标准库中的成员函数


2. string类对象的访问


2.1 operator 运算符重载访问字符串字符




2.2 公有成员函数at访问字符



  • at和运算符 访问字符的区别是:运算符 下标如果越界,编译器直接断言报错,终止程序运行;at访问字符时,如果下标越界,那么它自动捕获异常,但它不会终止程序运行

2.3 公有成员函数back()和front()访问字符


3. string类对象的修改操作


  • 常见的有
函数名 功能说明
push_back 在字符串后插入字符c
append 在字符串后追加一个字符串
operator+= 在字符串后追加字符串str

3.1 运算符重载operator+=追加字符串/字符


3.2 push_back尾插字符c


3.3 append追加字符串


分类 功能
string& append (const string& str) 追加string类对象
string& append (const string& str, size_t subpos, size_t sublen) 追加string类对象,从subpos位置开始,追加sublen个字符
string& append (const char* s) 追加常量字符串
string& append (const char* s, size_t n) 追加常量字符串,从首字符开始,追加n个
string& append (size_t n, char c) 追加n个c字符

3.4 尾删字符pop_back



3.5 assign替换string类对象内容(全部替换)



  • assign在替换字符串时,会将原字符串所有内容全部替换为新的值

3.6 replace替换string类对象内容(部分替换)


  • 对于replace,只需要熟悉上述两个常用的接口,用常量字符串和string类对象替换
  • 与assign对比,assign是将原字符串整个替换掉,而replace相对比较温柔,它会让你选择要替换的字符串位置和要替换字符的个数
  • 当len等于0时,replace就和insert插入的功能类似

3.7 insert插入字符串



  • 关于insert的其他接口暂不赘述,可下去查文档实现,对于迭代器的接口,后面使用到会讲述

3.8 返回值npos


3.9 erase删除部分字符



  • 可以看出,erase删除字符后,string类对象的size会发生变化,而capacity则不会改变

3.10 swap交换函数


4 练习

4.1 练习题:反转字母


4.2 练习题:找字符串中第一个只出现一次的字符


4.3 "整数"字符串相加


  • 思路:首先找到两个"整数"字符串的尾元素下标,然后让尾元素相加,相加之后记录进位的next的值,假如8+7=13,相加之后的字符串尾元素应该为13,那么实际上尾元素应该是13%10=3,进位数next=13/10=1,然后两个尾元素下标减减,如果短的字符串结束,那让长的字符串+0即可,记录新的字符串str,用来加两个字符串相加后的尾元素
相关推荐
yaoxin5211237 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫8 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp8 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的8 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉9 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉9 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
凡人叶枫9 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员9 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean9 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
LabVIEW开发10 小时前
LabVIEW + MATLAB 混合编程:爆炸场测试数据精准采集方案
开发语言·matlab·labview