首页 > 解决方案 > 在 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++ 中还有哪些其他方法可以获取两个索引之间的子字符串?

标签: c++string

解决方案


你可以这样做:

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()而不需要。

不要抱怨+1C++ 中的 --ranges 总是被指定为包含开始和排除结束。


推荐阅读