string::substr
时间: 2023-11-23 09:06:48 浏览: 52
C++中的string::substr函数是用来获取一个字符串的子串的函数。它的语法如下:
```c++
string substr (size_t pos, size_t len) const;
```
其中,pos表示子串的起始位置,len表示子串的长度。如果省略len,则子串将一直延伸到原始字符串的结尾。
下面是一个使用string::substr函数的例子:
```c++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello, world!";
string sub = str.substr(7, 5);
cout << sub << endl; // 输出 "world"
return 0;
}
```
在这个例子中,我们首先定义了一个字符串str,然后使用substr函数获取了从位置7开始,长度为5的子串,存储在了sub中。最后,我们输出了sub,结果为"world"。
需要注意的是,substr函数返回的是一个新的字符串对象,而不是原始字符串的一部分。因此,对返回的字符串对象进行修改不会影响原始字符串。
相关问题
std::string::substr
`std::string::substr` 是 C++ 标准库中的一个方法,它属于 `std::string` 类。这个方法用于获取字符串的一部分。
`substr` 接受两个参数:
1. `start`:从字符串的哪个位置开始提取子串。默认情况下,起始位置是 0,也就是字符串的第一个字符。
2. `length`:要提取的子串的长度。
这个方法返回一个新的字符串,包含了从指定位置开始的指定长度的子串。原始的 `std::string` 对象不会被改变。
下面是一个简单的例子:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::string sub_str = str.substr(7, 5); // 从位置 7(包含)开始,提取长度为 5 的子串
std::cout << sub_str << std::endl; // 输出 "world"
return 0;
}
```
注意,提取子串时,开始的位置是包含在内的,而结束的位置是不包含在内的。例如,对于 `str.substr(7, 5)`,从位置 7 开始,但不会提取位置 8 及其之后的所有字符。如果开始位置超出了字符串的范围,`substr` 方法将抛出 `std::out_of_range` 异常。同样,如果提取的长度超过了字符串的长度,那么将只返回字符串的一部分。
总的来说,`std::string::substr` 方法提供了非常方便的方式来提取字符串的一部分。
what(): basic_string::substr: __pos (which is 11) > this->size() (which is 0)
这是一个关于 basic_string::substr 函数的错误信息,它表明在字符串长度为0的情况下,尝试从位置11开始截取子字符串,导致了错误。这个错误通常是由于程序员的代码逻辑错误导致的,需要检查代码并修复错误。
阅读全文