我想找到两个索引之间的子串。 C ++中的substr(start_index,number_of_characters)函数根据字符数返回子字符串。因此,将其与开始和结束索引一起使用的小黑客如下:
array(unlist(data) %>% .[order(!seq_along(.) %% 2
, !seq_along(.) %% 4)]
, dim = c(3, 2, 2))
C ++中还有哪些方法可以获取两个索引之间的子字符串?
答案 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之外,您还可以将substr与std::distance结合使用:
auto size = std::distance(itStart, itEnd);
std::string newStr = myStr.subStr(itStart, size);