C++string的substr操作需要注意的地方

s.substr(pos,n)

返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值为0,n的默认值为s.size()-pos,即拷贝从pos开始的所有字符。

需要注意的是pos不能越界,pos+n可以越界。如果开始位置pos超过了string的大小,则substr函数会抛出一个out_of_range异常。如果开始位置pos加上计数值n大于string的大小,则substr会调整计数值,只拷贝到string的末尾。

### C++ 中 `string::substr` 方法的用法 在 C++ 的标准库中,`std::string` 类提供了成员函数 `substr()` 来获取字符串的一部分。该方法接受两个参数:起始位置和要提取的字符数。 #### 函数签名 ```cpp string substr (size_t pos = 0, size_t len = npos) const; ``` - `pos`: 子串的起始索引,默认为 0。 - `len`: 要复制的最大字符数量;如果此值大于直到字符串结尾的剩余字符,则尽可能多地复制[^1]。 当指定的位置超出范围时,将会抛出 `out_of_range` 异常。如果不提供长度参数或提供的长度超过了字符串末端,则返回从指定位置到字符串结束的所有字符。 #### 使用示例 下面是一些具体的使用案例: ##### 获取整个字符串作为子串 ```cpp #include <iostream> #include <string> int main() { std::string str = "HelloWorld"; // 提取全部内容 std::cout << str.substr(0); // 输出 HelloWorld return 0; } ``` ##### 从特定位置开始截取固定长度的子串 ```cpp #include <iostream> #include <string> int main() { std::string str = "HelloWorld"; // 从第3个字符开始,截取5个字符 std::cout << str.substr(2, 5); // 输出 lloWo return 0; } ``` ##### 处理越界情况 尝试访问超过字符串大小的部分会导致异常: ```cpp try { std::string s = "short"; auto sub = s.substr(7); } catch(const std::out_of_range& e){ std::cerr << "Error: " << e.what(); // 抛出 out_of_range 错误 } ``` 通过上述代码片段展示了如何安全有效地利用 `substr()` 进行字符串操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值