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

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

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

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

24.06.2015, 16:31. Просмотров 776. Ответов 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). И можно ли обойтись без создания хеш-таблицы?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2015, 16:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск подстроки в строке (C++):

Поиск подстроки в строке - C++
Вообщем,не знаю почему в программе не работает считывание с файла,если в консоли всё ищет корректно,то при чтении из файла,как я понимаю не...

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

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

Поиск подстроки в строке - C++
Добрый вечер. У меня есть string нужно найти определенную под строку примером &quot;world&quot; Ищу с помощью функции find, получаю номер первого...

Поиск подстроки в строке - C++
Уважаемые форумчане, помогите написать программу для поиска подстроки &quot;vvo&quot; в строке &quot;Petrovvortep&quot; Нужна очень срочно. можно...

Поиск подстроки в строке - C++
Здравствуйте. Очень нужна программа поиска подстроки в строке. Действительно оч нужна. точная формулировка задачи: Написать...

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

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

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 03:45
Привет! Вот еще темы с ответами:

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

Поиск подстроки в строке - C++
Здравствуйте, форумчане. Помогите справиться с заданием. Честно говоря, я даже не понял, что требуется, не говоря уж о...

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

Поиск подстроки в строке - 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...


Искать еще темы с ответами

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

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