C++ STL string类函数简介

本文详细介绍了C++标准库中的std::string类,包括其构造方法、常用操作如获取容量、长度、字符访问、赋值、拼接、交换、截取、比较、查找、替换、插入和删除等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string

string 本质是一个类,封装了动态数组,是以子节为最小存储单元的动态容器
string 内部的三个指针:
char* start_; char* end_; char* finish_;
因此,string 容器不需要空字符零,使用 finish 和Start 就可以算出

构造函数

string();                   创建一个长度为0得string 对象,默认构造函数
string(const char* s)       使用字符串s初始化
string(const string& str)   使用string对象str初始化另一个string对象
string(size_t n, char c)    创建一个由n个字符c组成得string对象
string(const char* s, size_t n)  
将前n个字符保存下来,当n大于字符串长度时(无视其结束),会出现乱码
string(const string& str, size_t pos = 0 , size_t n = npos)   
从 pos的位置起,截取 npos个字符 ,缺省则表示截取从pos起整个数组
template<class T> string(T begin, T end);  使用迭代器的方法创建字符串
string(string && str) noexcept;             采用移动构造的方对右值引用str进行构造
string(initializer_list<char> il)           将一个string 对象初始化为 初始化列表il中的字符。

特性操作

int capacity() const; 返回当前容量
int length() const ;  返回当前数据的大小,从字符串角度出发
int size() const;     返回当前数据的大小,从容器角度触发
bool empty() const;   返回容器是否为空
void clear();         清空容器
void reserve(size_t size = 0)     将容器容量设置为 size
void resize(int len, char c = 0); 将容器实际大小设置为Len,如果len < 实际大小,则截断,
反之用c填充

字符操作

char& operator[](int n);
const char& operator[](int n) const; // 只读
char & at(int n);
const char & at(int n ) const; // 只读
 上述用于返回容器中第 n 个元素,但是at函数提供范围检查,越界会抛出out_of_range异常
const char* c_str() const;    返回容器中的动态数组的首地址
const char* data() const;     返回容器中的动态数组的首地址 
int copy(char* s, int npos, int pos=0) const; 
从当前容器中的pos开始的npos个子节拷贝到s中,返回实际拷贝数目

赋值操作

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赋值为字符串

拼接操作

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 &str)
string& append(const string &s ,int pos ,int n) 字符串s中从pos开始的n个字符连接到字符串尾

交换操作

void swap(string & str) ; 如果数据量小,交换的是动态数组的内容,如果数据量大,交换的是动态数组的地址。

截取操作

string substr(size_t pos = 0, size_t n = npos) const; 返回pos开始的n 个字节组成的子容器

比较操作

bool operator==(const string &str1, const string &str2) const;  比较两个字符串是否相等(有两个参数)
int compare(const string & str) const; 
int compare(size_t pos, size_t n, const string &str) const;     比较当前字符串从pos开始的n个字节与str的关系
int compare(size_t pos, size_t n, const string &str, size_t pos2, size_t n2) const;
int compare(const char*s) const;   
比较成功返回0, 失败返回-1

查找操作

size_t find(char c, size_t pos =0);                  从pos开始查找字符c在当前字符串的位置
size_t find(const char* s, size_t pos =0) const;     查找从pos开始的字符串s在当前的位置
size_t find(const char* s, size_t pos, size_t n);    查找字符串s从pos开始的n个字符在当前串中的位置
size_t find(const string & str, size_t pos=0) const; 从pos 开始查找字符串s在当前串中的位置
size_t rfind(const char* s, size_t pos =0) const;    从右往左查
查找成功返回下标,否则返回-1

替换操作

string& replace(size_t pos, size_t len, const string& str);   当前字符串中从pos开始的len长度将其替换为str
string& replace(size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos);

插入操作

string& insert(size_t pos, const string& str);    从pos起插入str字符串
string& insert(size_t pos, const string& str, size_t subpos, size_t sublen = npos); 从pos起插入str的subpos开始的npos长度
string& insert(size_t pos, const char* s);
string& insert(size_t pos, const cahr* s, size_t n);

删除操作

string& erase(size_t pos = 0, size_t n = npos); 删除pos开始的n个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值