在C ++中查找两个索引之间的子字符串

时间:2018-05-27 00:23:50

标签: c++ string

我想找到两个索引之间的子串。 C ++中的substr(start_index,number_of_characters)函数根据字符数返回子字符串。因此,将其与开始和结束索引一起使用的小黑客如下:

array(unlist(data) %>% .[order(!seq_along(.) %% 2
                               , !seq_along(.) %% 4)]
      , dim = c(3, 2, 2))

C ++中还有哪些方法可以获取两个索引之间的子字符串?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

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()则不需要。{/ p>

不要抱怨+1 - C ++中的范围始终被指定为包含开始和独占结束。

答案 1 :(得分:0)

除了John Zwinck's answer之外,您还可以将substrstd::distance结合使用:

auto size = std::distance(itStart, itEnd);
std::string newStr = myStr.subStr(itStart, size);