58 lines
1.6 KiB
Markdown
58 lines
1.6 KiB
Markdown
|
# 字符串
|
||
|
|
||
|
```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);
|
||
|
}
|
||
|
```
|