C++ string常用函数使用方法大总结!

C++ 中的 string 类

C++中的 string 类是一个用于表示和操作字符串的类(容器),它是C++标准库的一部分。std::string提供了许多有用的成员函数来处理字符串,这些成员函数使得操作字符串变得更加简便。

这里列举一些常见的用法和功能,但不是所有。要查看所有用法和功能,请参阅C++标准库文档。

还有以下,是我写的一些关于string函数的使用注意事项,详情请看这篇文章:

  • C++string类型的一些注意事项

构造函数

std::string(); // 默认构造函数
std::string(const std::string& other); // 拷贝构造函数
std::string(std::string&& other); // 移动构造函数
std::string(const char* s); // 从C字符串构造
std::string(const char* s, size_t n); // 从C字符串构造,取前n个字符
std::string(size_t n, char c); // 用n个字符c构造

常用成员函数

容器相关

size_t size() const; // 返回字符串长度
size_t length() const; // 同上
bool empty() const; // 判断字符串是否为空
void clear(); // 清空字符串
size_t max_size() const; // 返回字符串对象最大可容纳的字符数
void resize(size_t n); // 调整字符串大小
void resize(size_t n, char c); // 调整大小并用字符c填充

下标运算符

char& operator[](size_t pos); // 获取指定位置的字符引用
char& at(size_t pos); // 同上,但会检查越界
char& front(); // 返回第一个字符引用
char& back(); // 返回最后一个字符引用
  • 注意:string的下标运算符不检查数组越界!!!

给string赋值与 += 运算符

std::string& operator=(const std::string& other); // 赋值运算符
std::string& operator=(std::string&& other); // 移动赋值运算符
std::string& operator=(const char* s); // 从C字符串赋值

std::string& operator+=(const std::string& other); // 字符串拼接
std::string& operator+=(const char* s); // 从C字符串拼接
std::string& operator+=(char c); // 追加字符

删除字符操作

void pop_back(); // 移除最后一个字符,容器操作

std::string& erase(size_t pos = 0, size_t len = std::string::npos);
// 删除从位置pos开始,长度为len的子串

添加,插入字符操作

void push_back(char c); // 在容器的尾部,添加一个字符
std::string& insert(size_t pos, const std::string& str); 
// 在位置pos插入字符串str

交换字符串内容

void swap(std::string& other); // 交换两个字符串内容

查找函数

size_t find(const std::string& str, size_t pos = 0) const; // 从位置pos开始查找子串str,返回找到的第一个位置,未找到则返回std::string::npos
size_t rfind(const std::string& str, size_t pos = std::string::npos) const; // 从位置pos开始反向查找子串str,返回找到的第一个位置,未找到则返回std::string::npos

std::string substr(size_t pos = 0, size_t len = std::string::npos) const; // 获取子字符串,从位置pos开始,长度为len
  • C++string类型内置的搜索函数
    这篇文章里介绍了关于string类型的所有查找函数

比较两个字符串大小

int compare(const std::string& str) const;
 // 比较两个字符串,相等返回0,小于返回负数,大于返回正数

比较规则

  • C++中的std::string类型的比较是基于字符的逐一比较,即从字符串的第一个字符开始比较,如果有一个字符不同,则两个字符串不相等。在您提供的例子中,第3个字符和第4个字符是不同的,所以这两个字符串不相等。因此,使用bool operator==比较boot和boor时,将返回false。

替换字符操作

void replace(size_t pos, size_t len, const std::string& str); 
// 用字符串str替换从位置pos开始,长度为len的子串

std::string& replace(size_t pos, size_t len, const char* s); 
// 用C字符串s替换从位置pos开始,长度为len的子串

拷贝字符操作

size_t copy(char* s, size_t len, size_t pos = 0) const;
 // 将从位置pos开始,长度为len的子串复制到字符数组s中

内存相关

allocator_type get_allocator() const; // 返回字符串对象的内存分配器

非成员函数:

std::string operator+(const std::string& lhs, const std::string& rhs); 
// 字符串连接

std::string operator+(const std::string& lhs, const char* rhs); 
// 字符串与C字符串连接

std::string operator+(const char* lhs, const std::string& rhs);
 // C字符串与字符串连接

std::string operator+(std::string&& lhs, std::string&& rhs); 
// 移动字符串连接

std::string operator+(std::string&& lhs, const std::string& rhs); 
// 移动字符串与字符串连接

std::string operator+(const std::string& lhs, std::string&& rhs); 
// 字符串与移动字符串连接

bool operator==(const std::string& lhs, const std::string& rhs); 
// 字符串相等比较

bool operator!=(const std::string& lhs, const std::string& rhs);
 // 字符串不等比较

bool operator<(const std::string& lhs, const std::string& rhs); 
// 字符串小于比较

bool operator<=(const std::string& lhs, const std::string& rhs);
 // 字符串小于等于比较

bool operator>(const std::string& lhs, const std::string& rhs); 
// 字符串大于比较

bool operator>=(const std::string& lhs, const std::string& rhs); 
// 字符串大于等于比较

std::istream& operator>>(std::istream& is, std::string& str); 
// 输入流读取字符串

std::ostream& operator<<(std::ostream& os, const std::string& str);
 // 输出流写入字符串

std::istream& getline(std::istream& is, std::string& str, char delim = '\n'); 
// 从输入流读取一行

总结

  • 注意:这里的列表并不完整,还有很多其他成员和非成员函数。要查看完整的列表,请查阅C++标准库文档。同时,也可以查看C++标准库中关于std::string_view的相关用法,std::string_view是一个轻量级的字符串视图,可以更高效地处理字符串。

你可能感兴趣的:(C/C++基础知识,c++,开发语言)