LINUX.ORG.RU

[stl] поиск подстроки в std::vactor<unsigned char>

 


0

0

Есть вектор чаров. Никак не могу вспомнить алгоритм для поиска (а может его и нет) подвтроки в векторе.

Может кто подскажет?

Сделал сос трокой, но не нравится (сильный оверзед):  

static std::string invalidStr = ...;

const std::vector<unsigned char> & data = ...;
if(data >= invalidStr.length())
{
  // TODO: wtf?!
  std::string str(data.begin(), data.end());
  if(str.find(invalidStr) != std::string::npos)
  {
    return false;
  }
}

return true;

Ответ на: комментарий от gaa

> http://ru.wikipedia.org/wiki/Алгоритм_Кнута_—_Морриса_—_Пратта

Не то. Если самому писать - то можно простой strstr использовать (память лишнюю не выделяет).

А я хотел чтото именно stl (ну типа как поиск не совпадений строк std::mismatch, но для поиска подстроки)

stpg
() автор топика

еще бывают суффиксные деревья, но если привязан к вектору, то наверное не совсем годится

Pi ★★★★★
()
Ответ на: комментарий от stpg

Дополни вектор нулем и используй strstr. Или в тупую скопипасть код strstr из libc и добавь туда проверку длины.

strstr((const char *)&data[0], "подстрока");

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.