Поиск станд.:: строка между пределом

если Вы знаете запуск и конечные положения в строке от того, где начать и закончить поиск. Например -

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.

Я пробую набор предел поиска, таким образом, он не пошел бы вне его.

8
задан cpx 6 March 2010 в 21:30
поделиться

3 ответа

Если вы действительно хотите ограничить длину обходящейся последовательности (предположительно потому, что строка очень длинная по сравнению с интересной областью), используйте std::search и передайте ему соответствующие итераторы в строке.

4
ответ дан 6 December 2019 в 00:06
поделиться

Да, вы можете сделать это с помощью string :: найдите .


std::string str("StringStringString");
std::string::size_type found = str.find("tr", 6, 9 - 6);
-1
ответ дан 6 December 2019 в 00:06
поделиться

Учитывая start как позицию, с которой вы хотите начать поиск, и stop как позицию, где вы хотите остановить поиск:

int pos = your_string.find("tr", start);

if (pos == std::string::npos || pos > stop)
    // it wasn't found.

Предполагается, что то, что вы указываете как stop , является той последней позицией, с которой может начаться совпадение. Так (например), если вы хотите сопоставить подстроку длиной четыре символа, она может длиться до трех символов после позиции stop . Если вы хотите убедиться, что конец подстроки находится перед точкой остановки, вы должны вычесть длину подстроки из stop при сравнении с pos

1
ответ дан 6 December 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: