首页 > 编程语言 >【C++从0到1-黑马程序员】STL容器(一)

【C++从0到1-黑马程序员】STL容器(一)

时间:2024-03-27 16:00:04浏览次数:30  
标签:const string STL pos C++ char 程序员 int 字符串

​​​​​​C++从0到1 - 黑马程序员 课程学习笔记

课程链接:23 string容器-构造函数_哔哩哔哩_bilibili

1. String 容器

1.1 string基本概念

本质:

string是C++风格的字符串,而string本质上是一个

string和char*的区别:

  • char* 是一个指针
  • string 是一个类,类内部封装了char*,管理这个字符串,是一个char*类型的容器

特点:

  • string类内部封装了很多成员方法
  • string管理char* 所分配的内存,不需要担心赋值越界和取值越界等,由类内部进行负责

1.2 string构造函数

构造函数原型:

string();                      // 创建一个空的字符串,例如:string str

string(const char* s);         // 使用字符串s初始化

string(const string& str);     // 使用一个string对象初始化另一个string对象

string(int n,char c);          // 使用n个字符c初始化

1.3 string赋值操作

函数原型:

string& operator=(const char* s);         // char*类型字符串,赋值给当前的字符串

string& operator=(const string &s);       // 把字符串s赋给当前的字符串

string& operator=(char c);                // 字符赋值给当前的字符串

string& assign(const char *s);            // 字符串s赋值给当前的字符串 string.assign()

string& assign(const char *s, int n);     // 把字符串s的前n个字符赋值给当前字符串

string& assign(const string &s);          // 把字符串s赋给当前字符串

string& assign(int n,char c);             // 用n个字符c赋给当前字符串

1.4 string字符串拼接

功能描述:在字符串末尾拼接字符串

函数原型:

string& operator+=(const char* str)               // 重载+=操作符

string& operator+=(const char c)                  // 重载+=操作符

string& operator+=(const string& str)             // 重载+=操作符

string& append(const char *s);                     // 把字符串s连接到当前字符串结尾

string& append(const char *s, int n);              // 把字符串s的前n个字符连接到当前字符串结尾

string& append(const string &s);                   // 同operator+=(const string& str)

string& append(const string &s,int pos,int n);    // 字符串s中从pos开始的n个字符连接到字符串结尾

1.5 string查找和替换

功能描述:

  • 查找:查找指定字符串是否存在
  • 替换:在指定位置替换字符串
函数原型:

int find(const string& str,int pos=0) const;      // 查找str第一次出现的位置,从pos开始查找

int find(const char *s,int pos = 0) const;        // 查找s第一次出现位置,从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;    // 查找s最后一次出现位置,从pos开始查找

int rfind(const char *s,int pos,int n) const;     // 从pos查找s的前n个字符最后一次位置

int rfind(const char c,int pos = 0) const;        // 查找字符从最后一次出现位置

string& replace(int pos,int n,const string& str); // 替换从pos开始的n个字符为字符串str

string& replace(int pos,int n,const char* s);     // 替换从pos开始的n个字符为字符串s

find和rfind的区别:find从左往右查找,rfind从右往左查找

 1.6 string字符串比较

比较方式:

  • 字符串比较是按字符的ASCII码进行对比
    • = 返回 0
    • > 返回 1
    • < 返回 -1
函数原型:

int compare(const string &s) const;

int compare(const char *s) const;

1.7 string字符存取

char& operator[](int n); // 通过[]方式取字符

char& at(int n);         // 通过at方法获取字符

1.8 string字符串插入和删除

string& insert(int pos,const char* s);     // 插入字符串

string& insert(int pos,const string& str); // 插入字符串
    
string& insert(int pos,int n,char c);      // 在制定位置插入n个字符c

string& erase(int pos,int n = npos);       // 删除从Pos开始的n个字符

1.9 string子串获取

string substr(int pos=0,int n = npos) const; // 返回由pos开始的n个字符组成的字符串

举个

标签:const,string,STL,pos,C++,char,程序员,int,字符串
From: https://blog.csdn.net/rabbit_qi/article/details/137079356

相关文章

  • 大专毕业,我是如何从外卖员成为Android程序员的?
    前言那年,我大专计算机专业毕业,四处寻觅,找不到工作,于是开启了我的送外卖旅途。我骑着电动车走在马路上,看着风雨里空旷的四周,就好像我的人生亦是如此,空空如也。一次意外的偶然事件,我看见了这份《Android宝典》,想起我大学时候的计算机专业,我毅然决然拾起当年的专业,捡起这本《......
  • 【OpenCV】OpenCV (C++) 与 OpenCvSharp (C#) 之间数据通信
     OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多......
  • C++复制构造函数、=运算符重载
    C++复制构造函数、=运算符重载#include<iostream>usingnamespacestd;classbase{private:intx,y;public:base():x(2),y(4){cout<<"basedefaultconstructor"<<endl;}base(intx,inty):x(x),y(y){cout<<"base......
  • C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)
    C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的异常的捕获C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)一、异常与捕获1、C++异常处理关键字:try,......
  • C++的数据类型
    1、整型的基本概念C++用int关键字来声明整型变量(int是integer的简写)。在声明整型变量的时候,可以在int关键字之前加signed、unsigned、short和long四种修饰符。signed:有符号的,可以表示正数和负数。unsigned:无符号的,只能表示正数,例如超女的身高和体重等。short:短的,取值范......
  • 使用C++20协程和io_uring优雅地实现异步IO
    距离2020年已经过去很久了,各大编译器对于C++20各项标准的支持也日趋完善,无栈协程也是其中之一,所以我就尝试着拿协程与io_uring实现了一下proactor模式,这篇文章用来记录一下我的设计和想法。除此之外,我们能在网络上找到许多优秀的C++20协程的教程以及许多优秀的协程应用(库),但从协程......
  • FFMPEG C++封装(一)(C++ FFMPEG)
    1概述FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C++封装,形成C++FFMPG库。2架构架构图如下所示:架构说明:Init初始化FFMPEG库。IStream输入流,FFMPEG的输入音视频文件。Packet音视频数据包Decoder音视频编码器Frame音视频帧FilterGraph音视频......
  • 【蓝桥杯选拔赛真题48】C++九进制回文数 第十四届蓝桥杯青少年创意编程大赛 算法思维
    目录C++九进制回文数一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、推荐资料C++九进制回文数第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题一、题目要求1、编程实现提示信息:回文数:反向排列与原......
  • C/C++整形变量溢出问题
    参考C语言的整型溢出问题|酷壳-CoolShell   概述整形溢出分为无符号(unsigned)整型溢出和有符号(signed)整型溢出无符号整型溢出对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”比如,两个unsignedint类型求和溢出......
  • C++ map踩坑
    目录!!!不要直接使用[]来操作map,否则会有意想不到的错误。尽量使用map提供的函数(count、find、insert、erase)来操作map242.有效的字母异位词描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t......