string substr函数
时间: 2024-03-20 12:37:13 浏览: 121
string的substr函数是用于截取字符串的子串的函数。它接受两个参数,第一个参数是起始位置,第二个参数是要截取的子串的长度(可选)。如果只传入一个参数,则默认截取从起始位置到字符串末尾的所有字符。
下面是一个示例:
```
string str = "Hello, World!";
string sub = str.substr(7, 5);
```
在上面的示例中,str.substr(7, 5)将返回"World",因为它从索引位置7开始截取长度为5的子串。
如果只传入一个参数,比如str.substr(7),则将返回"World!",因为它从索引位置7开始截取到字符串末尾的所有字符。
需要注意的是,substr函数返回的是一个新的字符串,原始字符串并不会被修改。
相关问题
std::string substr函数
### C++ `std::string` 中 `substr` 函数的使用方法
#### 获取子串的基本语法
`substr` 成员函数用于从给定位置开始提取指定长度的字符序列,形成一个新的字符串对象。其基本形式如下:
```cpp
string substr (size_t pos = 0, size_t len = npos) const;
```
这里 `pos` 表示起始索引位置,默认是从第一个字符开始;而 `len` 则表示要截取的字符数量,如果未提供则默认到字符串结尾[^1]。
#### 实际应用案例
下面通过几个具体的例子展示如何利用 `substr` 来实现不同的功能需求:
- **简单截取**
当只需要获取部分连续的内容时可以直接调用该函数并传入相应参数:
```cpp
#include <iostream>
#include <string>
int main() {
std::string text = "HelloWorld";
// 从第6个字符(即'W')开始复制直到结束
std::string subtext = text.substr(5);
std::cout << subtext << std::endl;
return 0;
}
// 输出: World
```
- **带长度限制的截取**
有时可能只希望获得固定大小的一段文字,在这种情况下可以同时设置两个参数来控制范围:
```cpp
#include <iostream>
#include <string>
int main(){
std::string sentence="The quick brown fox jumps over the lazy dog.";
// 提取出"quick"
std::string word=sentence.substr(4,5);
std::cout<<word<<std::endl;
return 0;
}
// 输出: quick
```
需要注意的是,如果请求超出实际可访问区域,则会抛出 `out_of_range` 异常。因此建议开发者在编写涉及边界条件判断逻辑之前先确认输入数据的有效性和合法性。
c++string substr函数提取错误返回什么
在C++中,`std::string` 类的 `substr` 函数用于从一个字符串中提取子字符串。如果 `substr` 函数的使用不当,例如指定的起始位置超出了字符串的范围,或者长度参数不正确,它会抛出一个 `std::out_of_range` 异常。
具体来说,`substr` 函数的原型如下:
```cpp
std::string substr (size_t pos = 0, size_t len = npos) const;
```
- `pos` 是子字符串的起始位置。
- `len` 是子字符串的长度。
如果 `pos` 大于字符串的长度,或者 `pos + len` 超过了字符串的长度,`substr` 会抛出 `std::out_of_range` 异常。
例如:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
try {
std::string sub = str.substr(20); // 起始位置超出范围
std::cout << sub << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "Exception: " << e.what() << std::endl;
}
return 0;
}
```
在这个例子中,`substr` 的起始位置是 20,超出了字符串的长度,因此会抛出 `std::out_of_range` 异常。
阅读全文
相关推荐















