string C++
时间: 2024-12-27 07:19:08 浏览: 5
### C++ 中 `string` 类的概述
在 C++ 中,`string` 是一种非常常用的数据类型,属于标准模板库 (STL) 的一部分。通过引入 `<string>` 头文件并使用命名空间 `std`,可以轻松创建和操作字符串对象。
#### 创建字符串对象
可以通过多种方式初始化一个 `string` 对象:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
// 使用默认构造函数创建空字符串
string str1;
// 使用带参数的构造函数创建指定内容的字符串
string str2 = "hello";
// 将字符数组转换成字符串
const char* cstr = "world";
string str3(cstr);
}
```
#### 字符串赋值与连接
支持简单的赋值以及加号 (`+`) 来实现两个字符串之间的拼接:
```cpp
// 赋值操作
str1 = "new content";
// 连接两个字符串
string greeting = str2 + ", " + str3;
cout << greeting; // 输出 hello, world
```
#### 遍历字符串中的每一个字符
利用范围基循环(range-based for loop),可以直接访问每个字符而无需关心索引位置:
```cpp
for (char ch : greeting) {
cout << ch;
}
```
此段代码会逐个打印出变量 `greeting` 所存储的所有字符[^1]。
#### 常见成员函数
- **获取长度**: 可以调用 `.length()` 或者 `.size()` 方法来获得当前字符串的实际大小。
- **查找子串**: 利用 `.find(sub)` 查找特定子串的位置;如果找不到则返回 `-1` 或者说是 `npos`。
- **替换部分文本**: 使用 `.replace(pos, len, newStr)` 替换从 pos 开始长度为 len 的一段文字为新的字符串 newStr。
- **插入/删除字符**: 分别有 `.insert(pos, text)` 和 `.erase(pos, len)` 函数用于向某处插入新内容或是移除部分内容。
下面是一些具体的例子展示这些功能的应用:
```cpp
if (!greeting.empty()) { // 检查是否为空
size_t idx = greeting.find(","); // 寻找逗号所在位置
if(idx != string::npos){
string partA = greeting.substr(0,idx); // 提取前半部分
string partB = greeting.substr(idx+2); // 提取后半部分
cout << "Part A: " << partA << endl;
cout << "Part B: " << partB << endl;
// 修改原字符串的一部分
greeting.replace(partA.length(), 2, "---");
cout << "Modified Greeting:" << greeting << endl;
}
}
// 插入或擦除某些元素
greeting.insert(greeting.size(),"!");
greeting.erase(greeting.begin()+7);
cout<<greeting<<"\n"; // 最终输出修改后的问候语句
```
阅读全文