如果您知道字符串中的开始和结束位置,从哪里开始并结束搜索。例如 -
string s = StringStringString
|S |t |r |i |n |g |S |t |r |i |n |g |S |t |r |i |n |g
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
如何在字符串中找到“tr”,指定开始搜索的位置在索引6处,结束搜索的位置是索引9.
我正在尝试设定搜索限制,因此不会超出它。
答案 0 :(得分:4)
如果你真的想限制遍历的序列的长度(可能是因为字符串与感兴趣的区域相比非常长),请使用std::search
并将相应的迭代器传递给字符串。
答案 1 :(得分:1)
将start
作为您要开始搜索的位置,并将stop
作为您要停止搜索的位置:
int pos = your_string.find("tr", start);
if (pos == std::string::npos || pos > stop)
// it wasn't found.
这假设您作为stop
给出的是最后一个匹配可以开始的位置。因此(例如)如果要匹配长度为四个字符的子字符串,则它可以在stop
位置之后最多延伸三个字符。如果您想确保子串的 end 位于停止点之前,那么当您与stop
进行比较时,您将从pos
中减去子串的长度
答案 2 :(得分:-1)
是的,您可以使用string::find执行此操作。
std::string str("StringStringString");
std::string::size_type found = str.find("tr", 6, 9 - 6);