在限制之间搜索std :: string

时间:2010-03-06 21:30:01

标签: c++ string stl

如果您知道字符串中的开始和结束位置,从哪里开始并结束搜索。例如 -

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.

我正在尝试设定搜索限制,因此不会超出它。

3 个答案:

答案 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);