• STL 中的string 容器方法与API



    前言

    本章主要记录string类中的各种方法,函数,以及它们的用途
    本章内容仅为学习记录,如有纰漏,欢迎指正


    简介

    • string本质上是一个类,它属于STL标准模板库。
    • 它的底层是用char* 指针来进行数据的维护的,整体结构非常类似线性表,学过线性表的话这一块内容应该没什么问题,只需要灵活运用其中的方法即可。
    //typedef unsigned int size_t
    class string
    {
    	char* _str;
    	size_t _size;
    	size_t _capacity;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注:string中的函数大多为通过对象来调用

    1.构造函数

    string();					//空字符串
    string(const char* s);		//用C风格字符串拷贝构造
    string(const string& str);	//用string字符串拷贝构造
    string(int n, char c);		//用n个字符c初始化
    
    • 1
    • 2
    • 3
    • 4

    2.赋值操作

    //重载 = 运算符
    string& operator= (const char* s);		
    string& operator= (const string &s);
    string& operator= (char c);				//将字符赋值给当前字符串
    
    //赋值:
    string& assign(const char *s);		
    string& assign(const char *s, int n);	//将s字符串的前n个字符赋给当前字符串
    string& assign(const string &s);		
    string& assign(int n, char c);			//将n个c字符赋给当前字符串
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.字符串拼接

    //重载 += 运算符
    string& operator+= (const char * str);
    string& operator+= (const char c);
    string& operator+= (const string& str);
    
    //字追加函数,
    string& append(const char* s);
    string& append(const char* s, int n);				//追加s的前n个字符
    string& append(const string &s);
    string& append(const string &s, int pos, int n);	//从s字符串中第pos个位置开始追加n个字符
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4.查找和替换

    //find:从左往右查找,查找是否包含子字符串s
    int find(const string& str, int pos = 0) const;		//const表示常函数,不能修改成员属性
    int find(const char* s, int pos = 0) const;			
    int find(const char* s, int pos, int n) const;
    int find(const char c, int pos = 0) const;
    
    //rfind:从右往左查找
    int rfind(const string& str, int pos = npos) const;	//npos:结尾位置
    int rfind(const char* s, int pos = npos) const;
    int rfind(const char* s, int pos, int n) const;
    int rfind(const char c, int pos = 0) const;
    
    //replace替换(传进去多的字符会进行插入,将插入位置后面数据后移,少的话后面数据前移)
    string& replace(int pos, int n, const string& str);		//将自身从pos位置开始的n个字符替换为str
    string& replace(int pos, int n, const char* s);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5.字符串比较

    //ASCII码逐位比较
    //结果为 = 返回 0
    //结果为 > 返回 正数
    //结果为 < 返回 负数
    int compare(const string &s) const;
    int compare(const char* s) const;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6.字符串存取

    char& operator[](int n);	//重载[],可以通过[]直接访问
    char& at(int n);			//传入下标
    
    • 1
    • 2

    7.插入或删除

    //插入:
    string& insert(int pos, const char* s);
    string& insert(int pos, const string& str);
    string& insert(int pos, int n, char c);
    
    //删除:
    string& erase(int pos, int n = npos);	//从指定位置pos删除n个字符,n默认到结尾
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    8.截取

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

  • 相关阅读:
    Go module快速上手
    ABB PU515A 3BSE032401R1 自动化控制模块
    python实现一个简单的桌面倒计时小程序
    网络技术-Cisco路由器
    Linux下企业级夜莺监控分析工具的远程访问设置【内网穿透】
    微信网页授权回调地址放多个参数的方法
    关于时间片调度算法issue的分析与解决
    Spring bean的生命周期
    Java安全之CC6
    36 - 新的 Promise 方法:allSettled & any & race
  • 原文地址:https://blog.csdn.net/KamikazePilot/article/details/126822417