Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
JuliLo
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 2
#1

Поиск подстроки в строке - C++

24.06.2015, 16:31. Просмотров 769. Ответов 6
Метки нет (Все метки)

Здравствуйте. Задача такова: есть список (вообще, список большой, и не имеет в принципе ограничения, но сейчас у меня подстрок 5) подстрок, которые будут находиться в строке и если какая-то из подстрок есть в строке, то идет логирование.
C++
1
2
3
4
5
6
7
8
char szCommands[5][128]
{
    "_strafe_helper",
    "_groundstrafe",
    "_knifebot",
    "_bhop",
    "wpn_"
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void MyClientCommand(edict_t *pEntity)
{
    int pid = ENTINDEX(pEntity);
 
    if (pid <= 0 || pid > 32)
        RETURN_META(MRES_IGNORED);
 
    if (FStrEq(CMD_ARGV(0), "say") || FStrEq(CMD_ARGV(0), "say_team"))
        RETURN_META(MRES_IGNORED);
    
    for (int i = 0; i < ARRAYSIZE(szCommands); i++)
    {
        if (strstr(CMD_ARGV(0), szCommands[i]))
        {
            const char *szName = STRING(pEntity->v.netname);
 
            client_print_color(0, pid, "\x04[%s]\x03 %s\x01 использует запрещенную команду [\x04%s\x01].", PREFIX, szName, CMD_ARGV(0));
        }
    }
    
    RETURN_META(MRES_HANDLED);
}
Подскажите пожалуйста, как можно оптимизировать это дело? Ужасно смущает этот цикл, который будет происходить из-за любой команды, которую вводит клиент (это плагин для сервера CS 1.6, Metamod). И можно ли обойтись без создания хеш-таблицы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2015, 16:31     Поиск подстроки в строке
Посмотрите здесь:

Поиск подстроки в строке - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using namespace std; int GetLength(char* string) { int i; int...

Поиск подстроки в строке - C++
Как в С++ осуществляется поиск подстроки в строке???

Поиск подстроки в строке - C++
Найти множество всех слов, которые встречаются в каждом из 2 заданных предложений.

Поиск подстроки в строке - C++
Добрый вечер. Помогите пожалуйста с заданием, нужно срочно его сделать. Сам текст: даны 2 массива (один большой, другой маленький), нужно...

Поиск подстроки в строке - C++
Добрый день всем! Ребята помогите решить такую задачу. Мне нужно в строке char *text = &quot;Help me jax111mackey&quot; получить строку 111 в...

Поиск подстроки в строке - C++
Добрый день. Ошибка в программе. Первый раз ищет отлично, потом постоянно ошибка //-функция осуществляет поиск подстроки str2 в...

Поиск подстроки в строке - C++
Доброго времени суток! Столкнулся с такой задачей. Вводим 10 слов, далее вводим приставку (начало слова). В итоге программа должна показать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JuliLo
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 2
30.06.2015, 21:06  [ТС]     Поиск подстроки в строке #2
Неужели никто не сможет помочь?
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,269
Завершенные тесты: 3
30.06.2015, 21:52     Поиск подстроки в строке #3
JuliLo, думаю, никак, команд в строке может быть несколько, насколько я помню. Иначе можно break поставить после if.

Кстати, для себя, откуда изучаете создание плагинов?
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,636
01.07.2015, 00:04     Поиск подстроки в строке #4
Алгоритм Ахо - Корасика устроит?
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
01.07.2015, 01:34     Поиск подстроки в строке #5
Однопроходный - без вариантов. Вот здесь "Как разбить сплошную строку на слова?" AC-матчером проверялось 3,000,000+ миллиона подстрок - можете посмотреть тайминг.
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,636
01.07.2015, 01:49     Поиск подстроки в строке #6
Цитата Сообщение от gazlan Посмотреть сообщение
Однопроходный - без вариантов.
Чем вам Ахо Корасик не однопроходный? Каждый символ нужно прочитать всего по одному разу, алгоритм имеет линейную сложность. Другое дело, что для миллиона подстрок он будет кушать очень прилично памяти под вспомогательные структуры.
gazlan
01.07.2015, 03:45     Поиск подстроки в строке
  #7

Не по теме:

Вы, вообще, читаете то, на что пишете ответы? И как с пониманием прочитанного?

Yandex
Объявления
01.07.2015, 03:45     Поиск подстроки в строке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru