STL 中还有一个字符串类
初始化
string
类的初始化非常简单直接,另外在现代的C++中不建议再使用老的
char*
了。
初始化也可以是复制另一个字符串
-
:string s(str)
是s
的复制。str
-
:string s(str, strbegin, strlen)
是s
始于 strbegin 长为 strlen 的复制。str

string 类的初始化方法
string s1 = "123";
string s2;
cin >> s2; // 从输入台读入 s2 的内容
getline(cin, s2);
比较
string
类重载了运算符,因此可以直接用
==
,
>
等符号进行字符串的比较。
bool equal = (str == "1234"); // true
类方法
向字符串末尾添加可以直接使用
+=
运算符,也可以使用
append
、
push_back
这种函数。
string str = "123";
str += "4"; // +=, append(), push_back()都可以用来添加字符
可以用
empty()
方法判断字符串是否为空。
size()
和
length()
方法都可以返回字符串的长度。
bool empty = str.empty();
用
substr
方法截选子串
str.substr(str.length()-6, 6); // 截取后6位子串
str.substr(1, 5); // 从第 1 位开始,截选长度为 5 的子串。(第一个参数不能越界,第二个参数可以越界)
// str.substr(str.size(), 10) 是空串, str.substr(str.size() + 1, 10) 会报错
data()
方法将内容以
字符数组形式返回,类似于Java的
toCharArray()
方法。
reserve()
方法:保留内存以存储一定数量的字符
string
类还支持迭代器。
string
类可以用
[]
去取一个单独的字符,返回的是一个
char
类型的引用,可以用这种方式修改
string
。(注意不要像Python那样用一个slice, [1:3]这样,去截选子串哦)
char c = str[0];
for (char c : str) {
// do sth.
}
algorithm包下的方法
- 可以对字符串里的
字符进行排序:char
sort(s.begin(), s.end());
- 删除字符串的一个子串:
s.erase(s.begin(), s.begin() + 3);
- 字符串逆序
reverse(s.begin(), s.end());