本文是 C++ 中 string
的常用用法的总结笔记。
头文件 #include <string>
1. 初始化 / 赋值
1 2 3 4 5
| string a = "hello world"; string b = string(10, 't'); string c(10, 't'); string d(a.begin(), a.end() - 3); string e(a.rbegin(), a.rend());
|
2. 长度与判空
a.size()
或者 a.length()
均可获得字符串长度
a.empty()
判断是否为空
a.clear()
把字符串清空
3. 子串
使用 string 的构造函数来提取子串
1
| string b = string(string a, int start, int num);
|
截取字符串 a
从 start
起 num
个字符,赋值给子串 b
使用 substr 函数
1 2 3
| string b = a.substr(int start, int num); string c = a.substr(2); string d = a.substr(2, 4);
|
4. 查找
1 2 3 4 5 6 7 8 9 10
| string a = "abcabxabcc";
cout << a.find('a') << endl; cout << a.find("abx") << endl;
if (a.find("xx") == a.npos) cout << "Not Find" << endl; if (a.find("xx") == string::npos) cout << "Not Find" << endl;
|
5. 替换,插入与删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| string a = "abcdefg";
a.replace(2, 3, "tttt");
a.insert(2, "tttt"); a.insert(0, "tttt"); a.insert(a.size(), "tttt");
a.erase(2,3); a.erase(0,2); a.erase(3);
|
6. 遍历
三种常用的遍历方式:
1 2 3 4 5 6 7 8 9 10 11 12 13
| string a = "abcdefg";
for (int i = 0; i < a.size(); i++) cout << a[i] << endl;
for (char c : a) cout << c << endl;
for (string::iterator it = a.begin(); it != a.end(); it++) cout << *it << endl;
|
7. 数值与字符串相互转换
1 2 3 4 5
| int b = stoi("121"); float c = stof("12.345");
string d = to_string(121); string e = to_string(12.345);
|
8. 排序
1 2 3 4 5 6 7 8 9
| string a = "Aa32Cc1bB";
sort(a.begin(), a.end()); cout << a << endl;
sort(a.begin(), a.end(), greater<char>()); cout << a << endl;
|
9. 杂项
1 2 3 4 5 6 7 8 9 10
| string a = "abcdefg";
a.push_back('2');
a.pop_back();
reverse(a.begin(), a.end());
|