C++中的string 的substr和erase的区别
时间: 2024-06-13 13:03:47 浏览: 76
在C++中,string的substr和erase都是用于操作字符串的函数,但它们的作用不同。
substr函数用于截取字符串的一部分,可以指定起始位置和截取长度,返回截取后的子字符串。例如,在引用中的代码中,str.substr(5)表示从字符串str的第6个字符开始截取到字符串末尾,输出结果为“5678”;而str.substr(1,3)表示从字符串str的第2个字符开始截取长度为3的子字符串,输出结果为“123”。
erase函数用于删除字符串中的一部分,可以指定起始位置和删除长度,返回删除后的字符串。例如,在引用中的代码中,str.erase(3,2)表示从字符串str的第4个字符开始删除长度为2的子字符串,即删除了“34”,最终输出结果为“0125678”。
因此,substr和erase的区别在于substr是截取字符串的一部分并返回子字符串,而erase是删除字符串的一部分并返回删除后的字符串。
相关问题
C++中string用法
在C++中,`std::string`是一个非常常用的数据类型,它代表字符串。它是C++标准库中的类,用于处理字符序列。以下是`std::string`的一些基本用法:
1. 创建字符串:你可以直接使用双引号创建一个字符串字面量,如`std::string str = "Hello World";`。也可以使用构造函数,如`str = std::string("Hello World");`。
2. 访问元素:通过索引来访问或修改单个字符,例如`str[0]`会返回第一个字符,`str[4]`则为"L"。
3. 长度操作:`str.length()` 或 `str.size()` 返回字符串长度。
4. 连接字符串:可以使用`+`运算符连接两个字符串,如`std::string s1 = "Hello"; std::string s2 = "World"; std::string combined = s1 + " " + s2;`
5. 插入、替换和删除字符:提供了一系列成员函数如`insert()`, `replace()`, 和 `erase()`来进行这些操作。
6. 索引操作:支持迭代器和范围基础for循环,如`for (char c : str) { /* do something */ }`。
7. 截取和查找:有`substr()`方法截取子串,`find()`和`rfind()`方法用于查找子串的位置。
C++ 中string删除尾部字符
在C++中,如果你想从`std::string`对象中删除尾部的一个或多个字符,可以直接使用`substr()`函数结合`erase()`方法。这里是一个例子:
```cpp
#include <iostream>
#include <string>
std::string removeTailChar(std::string str, int count = 1) {
// 如果count为0或字符串为空,直接返回原串
if (count <= 0 || str.empty())
return str;
// 计算新的字符串长度,即原始长度减去count
size_t newLength = str.length() - count;
// 使用substr获取新字符串,并调用erase移除尾部多余部分
str.erase(str.begin() + newLength);
return str;
}
int main() {
std::string myString = "Hello, World!";
std::cout << "Original string: " << myString << std::endl;
std::string result = removeTailChar(myString, 7); // 删除"World!"
std::cout << "After removing tail: " << result << std::endl;
return 0;
}
```
在这个示例中,`removeTailChar`函数会删除指定数量的尾部字符,如果不提供数量,默认只删除一个。
阅读全文