c++ - 在 C++ 中查找两个索引之间的子字符串
问题描述
我想找到两个索引之间的子字符串。C++ 中的substr (start_index, number_of_characters) 函数根据字符数返回子字符串。因此,将它与开始和结束索引一起使用的小技巧如下:
// extract 'go' from 'iamgoodhere'
string s = "iamgoodhere";
int start = 3, end = 4;
cout<<s.substr(start,end-start+1); // go
C++ 中还有哪些其他方法可以获取两个索引之间的子字符串?
解决方案
你可以这样做:
std::string(&s[start], &s[end+1])
或这个:
std::string(s.c_str() + start, s.c_str() + end + 1)
或这个:
std::string(s.begin() + start, s.begin() + end + 1)
这些方法要求end
小于s.size()
,substr()
而不需要。
不要抱怨+1
C++ 中的 --ranges 总是被指定为包含开始和排除结束。
推荐阅读
- assembly - Arm64 中缺少 SSAT 和 USAT 指令的替代方案?
- java - Java如何从命令行创建空白项目
- vue.js - Nativescript-Vue 中的 MQTT
- mysql - MySQL - varchars 的多种情况
- selenium - Selenium cssselector 显示正确的 webelement 但脚本总是运行异常没有这样的元素
- php - 在 PHP 中为 gRPC 响应准备 HTTP/2 标头
- typescript - 为什么 Typescript 接口允许自引用?
- java - 使用 Mongodb 在 Spring Boot 中使用嵌套类的模型
- javascript - 我的 Javascript 文件和 jQuery 没有链接到我的 html 文件(所有内容都在同一个文件夹中,并且没有拼写错误)
- r - 使用来自另一个数据帧的 colnames 子集数据帧