This commit is contained in:
parent
56a0500b7b
commit
1f13bd1698
@ -65,6 +65,7 @@
|
||||
- [总结](./stl.md)
|
||||
- [排序](./stl_sorting.md)
|
||||
- [哈希表](./stl_hash_table.md)
|
||||
- [字符串](./stl_string.md)
|
||||
|
||||
# 技巧
|
||||
|
||||
|
57
notes/src/stl_string.md
Normal file
57
notes/src/stl_string.md
Normal file
@ -0,0 +1,57 @@
|
||||
# 字符串
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
int main(int argc, const char *argv[]) {
|
||||
// 输出到 stdout
|
||||
std::cout << "Input your string: ";
|
||||
// 从 stdin 读取
|
||||
std::string input;
|
||||
// 不能读入空格,以空格、制表符、回车符作为结束标志
|
||||
std::cin >> input;
|
||||
// 可以读入空格和制表符,以回车符作为结束标志
|
||||
std::getline(std::cin, input);
|
||||
|
||||
// 创建一个字符串
|
||||
std::string str1 = "surface";
|
||||
// 深拷贝一个字符串
|
||||
std::string str2 = str1;
|
||||
std::string str3 = std::string(str1);
|
||||
// 从下标 1 开始深拷贝
|
||||
std::string str4 = std::string(str1, 1);
|
||||
// 从下标 1 开始深拷贝,长度为 2
|
||||
std::string str5 = std::string(str1, 1, 2);
|
||||
std::string str6 = str1.substr(1, 2);
|
||||
|
||||
// 长度
|
||||
int len = str1.length();
|
||||
// 是否为空
|
||||
bool isEmpty = str1.empty();
|
||||
// 类型转换
|
||||
int val = std::stoi("1024");
|
||||
|
||||
// 读取
|
||||
std::cout << str1[0] << std::endl;
|
||||
std::cout << str1.front() << std::endl;
|
||||
std::cout << str1.back() << std::endl;
|
||||
// 在结尾追加
|
||||
str1.append(" book");
|
||||
// 在索引为 6 的字符前面插入字符串
|
||||
str1.insert(6, "foo");
|
||||
// 替换从 0 开始,长度为 2 的子字符串
|
||||
str1.replace(0, 2, "msft");
|
||||
// 删除从 0 开始,长度为 4 的子字符串
|
||||
str1.erase(0, 4);
|
||||
|
||||
// 两个字符串组合
|
||||
std::string str7 = str1 + str2;
|
||||
// 两个字符串比较
|
||||
bool isEqual = str1 == str2;
|
||||
// 寻找子字符串出现的起始位置
|
||||
int startIndex = str1.find("foo");
|
||||
// 从索引 2 开始往后搜索
|
||||
startIndex = str1.find("foo", 2);
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue
Block a user