C++中的
string 类是一个用于表示和操作字符串的类(容器)
,它是C++标准库的一部分。std::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的下标运算符不检查数组越界!!!
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
这篇文章里介绍了关于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');
// 从输入流读取一行