C++ string 常用知识总结
/*
C++ string 常见知识点总结
*/
#include <iostream>
#include <string>
using namespace std;
int main()
{
//一、初始化
// 1.字符串初始化
string str_1("Hello World "); // string str_1 = "Hello World ";
// 2.初始化为包含n个元素的string对象,每个字符都为c
string str_2(5, 'y');
// 3.复制构造函数
string str_3(str_1);
//二、获取字符串长度
// 1.size
int str_size = str_1.size();
// 2.length
int str_length = str_1.length();
//三、字符串的拼接
// 1.重载 + 或者 += 运算符,可在string对象后追加字符、string对象、C风格字符串
str_3 = str_1 + str_2;
str_3 += str_1;
str_3 = str_3 + "hhh";
str_3 = str_3 + 'c';
// 2.append 参数为C风格字符串或者string对象
str_3.append("hhh");
str_3.append(str_2);
// 3.push_back 参数为单个字符
str_3.push_back('c');
//四、字符串的比较
// 1. 重载 == 和 != 运算符 str_1 == str_2 str_1 != str_2
// 2. compare
// 相等返回0,小于返回负数,大于返回正数
int res_1 = str_1.compare(str_2);
int res_2 = str_1.compare(1, 2, str_2);// str_1中下标为1开始的2个字符与 str_2 比较
int res_3 = str_1.compare(1, 2, str_2, 3, 4);// str_1中下标为1开始的2个字符与 str_2 中下标为3开始的4个字符比较
//五、获取子串 substr(start_pos, length) length不指定即截取到字符串最后
string str_4 = str_1.substr(1, 3);
//六、访问字符串元素
// 1. 下标访问
char c_1 = str_3[0];
// 2. at
char c_2 = str_3.at(0);
//七、查找
// 1.find & rfind
// 从字符串的 pos 位置(find 往前,rfind 往后)开始(若不指定 pos 的值,则默认从索引 0 处开始),查找子字符串 str。
// 如果找到,则返回该子字符串首次出现时其首字符的索引;否则,返回 string::npos:
// string 类将 npos 定义为保证大于任何有效下标的值。
int pos = str_1.find("Hello");
// 2.返回子串出现在母串中的首次出现的位置,和最后一次出现的位置 find_first_of() & find_last_of()
int pos_1 = str_1.find_first_of("He");
// 3.返回子串中任意字符在母串中的首次 未 出现的位置,和最后一次的位置 find_first_not_of() & find_last_not_of()
int pos_2 = str_1.find_first_not_of("Hel");// 返回 4
//八、元素删除 erase(pos, n) 删除从pos开始的n个字符
str_1.erase(1, 2);
//九、获取字符串第一个和最后一个字符 front & back
char front = str_1.front();
char back = str_1.back();
return 0;
}