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

原文由 FlyingAura 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 386
1 个回答

你可以这样做:

 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++ 中的范围总是被指定为包含开始和排除结束。

原文由 John Zwinck 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题