【C++】string 的特性和使用
Ciallo~ (∠・ω< )⌒★
string(1)
- 1. 构造函数
- 1.1 string();
- 1.2 string(const char* s);
- 1.3 string(const string& str);
- 1.4 string(size_t n, char c);
- 1.5 string(const string& str, size_t pos, size_t len = npos);
- 1.6 string(const char* s, size_t n);
- 2. 析构函数
- 3. 赋值运算符重载
- 4. 字符串的遍历
- 4.1 下标+[]
- 4.2 迭代器
- 4.3 范围for
- 5. string类对象的容量操作
- 6. string类对象的修改操作
- 7. string类非成员函数
1. 构造函数
string类有如下图的构造函数:
其中比较重要的是1,2,4,6。
1.1 string();
无参的构造函数,定义了一个空字符串
string str1;
1.2 string(const char* s);
用常量串初始化
string str1("hello world!");
string str2 = "hello world!";
这两种初始化方式的意义是不一样的,str1是直接构造,str2是隐式类型转换
1.3 string(const string& str);
这是string类的拷贝构造函数
string str1("hello world!");
string str2(str1);
1.4 string(size_t n, char c);
用n个字符c初始化
string str(10, '*'); //用10个*初始化str
1.5 string(const string& str, size_t pos, size_t len = npos);
字符串的截取,其中str是源字符串,pos是开始截取的位置,len是截取的长度
string str1 = "hello world";
string str2(str1, 2, 6);
输出结果是:llo wo
1.6 string(const char* s, size_t n);
拷贝一个字符数组s的前n个元素
2. 析构函数
~string(),是string类已经写好的,而且在程序结束时会自动调用,没啥好说的。
3. 赋值运算符重载
str1 = "Test string: "; // c-string
str2 = 'x'; // single character
str3 = str1 + str2; // string
4. 字符串的遍历
4.1 下标+[]
string str("hello world");
for (int i = 0; i < str.size(); i++)
{cout << str[i] << " ";
}
4.2 迭代器
string str("hello world");
string::iterator it = str.begin();
while (it != str.end())
{cout << *it << " ";++it;
}
cout << endl;
迭代器是通用的遍历容器的方法,用原生指针或用封装原生指针的自定义类实现。
4.3 范围for
auto是C++11引入的关键字,用于自动推导变量类型。编译器根据初始化表达式的类型推断变量的实际类型,简化代码编写并提升可读性。
string str("hello world");
for (auto e : str)
{cout << e << " ";
}
5. string类对象的容量操作
函数名 | 功能 |
---|---|
size | 返回字符串的有效字符长度 |
length | 返回字符串的有效字符长度 |
capacity | 返回字符串总空间大小 |
empty | 判断字符串是否为空,是则返回true,否则返回false |
clear | 清空有效字符 |
reserve | 为字符串预留空间 |
resize | 将有效字符个数设为n个,多出的空间用指定字符填充 |
注意当 reserve 的参数大于字符串底层总空间大小时,扩容,小于字符串底层总空间大小时不缩容。
当 resize 的参数大于字符串底层总空间大小时,调用reserve扩容。
6. string类对象的修改操作
函数名 | 功能 |
---|---|
push_back | 在字符串后尾插字符c |
append | 在字符串后追加一个字符串 |
operator+= | 在字符串后追加一个字符串 |
c_str | 将字符串以字符数组形式返回 |
find | 查找一个字符或字符串第一次出现的下标 |
substr | 从pos位置开始,向后截取n个字符,然后将其返回 |
7. string类非成员函数
函数 | 功能 |
---|---|
operator+ | 追加字符串 |
operator<< | 输出运算符重载 |
operator>> | 输入运算符重载 |
getline | 获取一行字符串 |
rational operators | 字符串的大小比较 |