6.字符串
include<string>
储存字符串
6.1 常用方法
构造
构造函数:string(长度, 初值)
string s1; // 构造字符串,为空
string s2 = "aaa"; // 构造字符串,并赋值aaa
string s3(10, '6'); // 构造字符串,通过构造函数构造为6666666666
输入输出
string s;
cin >> s;
cout << s;
其他
作用 | 用法 | 示例 |
---|---|---|
修改、查询指定下标字符 | [] | s[1] = 'a'; |
是否相同 | == | if (s1 == s2) |
字符串连接 | + | string s = s1 + s2; |
尾接字符串 | += | s += "aaa"; |
取子串 | .substr(起始下标, 子串长度) | string sub = s.substr(2, 10); |
查找字符串 | .find(字符串, 起始下标) | int pos = s.find("awa"); |
数值与字符串互转
源 | 目的 | 函数 |
---|---|---|
int / long long / float / double / long double | string | to_string() |
string | int | stoi() |
string | long long | stoll() |
string | float | stof() |
string | double | stod() |
string | long double | stold() |
6.2注意事项
尾接字符串一定要用 +=
string 的 += 运算符,将会在原字符串原地尾接字符串。而 + 了再 = 赋值,会先生成一个临时变量,在复制给 string.
通常字符串长度可以很长,如果使用 + 字符串很容易就 TLE 了。
string s;
for (int i = 0; i < 5e5; i++)
s = s + "a";
// 优化后
string s;
for (int i = 0; i < 5e5; i++)
s += "a";
7. 二元组pair
#include <utility>
用来储存二元组
7.1 常用方法
构造
pair<第一个值类型, 第二个值类型> pr
- 第一个值类型:要储存的第一个值的数据类型
- 第二个值类型:要储存的第二个值的数据类型
pair<int, int> p1;
pair<int, long long> p2;
pair<char, int> p3;
赋值
pair<int, char> pr = make_pair(1, 'a');
pair<int, char> pr = {1, 'a'};
取值
直接取值
- 取第一个值:
.first
- 取第二个值:
.second
pair<int, char> pr = {1, 'a'};
int awa = pr.first;
char bwb = pr.second;
结构化绑定 C++17
pair<int, char> pr = {1, 'a'};
auto &[awa, bwb] = pr;
判同
直接用 ==
运算符
pair<int, int> p1 = {1, 2};
pair<int, int> p2 = {1, 3};
if (p1 == p2) { ... }
7.2 适用场景
所有需要二元组的场景均可使用。