| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > HEEEEELP ! |
| Автор: n00dless 15.9.2004, 19:41 |
| #include <help_me.h> респект ; люди, я только начинаю кодить на C++, посему прошу не кричать, что я задаю идиотские вопросы вопрос: допустим, пользователь вводит строку "ывфывфываважноесловоыфаф". каким образом мне сделать проверку на наличие в строке подстроки "важноеслово" ? пытался работа с классами cstring и sstring, но там все очень мутно и непонятно. падскажите пжалста, если можно ввиде исходника, желательно, используя стандартные операторы здесь бываю редко, если не трудно, ответте по e-mail плиzzz: [email protected] заранее признателен, n00dless |
| Автор: Дрон 15.9.2004, 19:49 | ||
Вопрос-то может и не глупый, но правила форума ты нарушаешь. 1) Заголовок сообщения должен кратко отражать суть проблемы, нельзя давать заголовки типа "Помогите", "Срочно нужна помощь", "Есть вопрос", "Очень надо", "Сложный вопрос по программированию" и тому подобное. |
| Автор: Pakshin A. S. 15.9.2004, 22:43 | ||||
Класс string содержит несколько функций-членов, предназначенных для поиска подстрок, в частности функции find() и rfind().
Пример:
|
| Автор: Coocky 15.9.2004, 22:53 | ||
| Исходник не дам(сам сделай, иначе не научишься программировать Итак получай алгоритм: Подсчитай количество букв в слове[ b]важноеслово[/b] Это будет критерием проверки на совпадение.Затем проверяй (в цикле ) каждую букву,из веденной пользователем,с буквой своего слова.Если совпало продолжай цикл,плюсуя заранее подготовленую переменную.И когда значение переменой совпадет с количеством букв слова важноеслово ,выходи из цикла.Такое слово есть.Не забывай при не совпадении сбрасывать переменую на ноль.Иди дальше.Если в конце цикла переменная меньше кол-ва букв,такого слова нет. Ну уж если не разобрался,напишу код.Помогу и c СString.Но пробуй сам О,пока писал уже код кинули.Но это код CString.А ты просил
|
| Автор: Конструктор 16.9.2004, 08:50 |
| Заголовок string.h Прототип char *strstr(const char *s1, const char *s2); Описание Сканирует строку на присутсвие заданной подстроки. strstr сканирует s1 до первого нахождения строки s2. Возвращаемые значения strstr возвращает указатель в строке s1, где начинается s2 . Если s2 не встречается в s1, strstr возвращает NULL. Копирайт C Runtime Library Reference - BCB6 |
| Автор: mr.DUDA 16.9.2004, 11:02 | ||
| Модератор: Название темы должно отражать ее суть! P.S.
strstr есть и в VC++, и в gcc, и в Watcom |
| Автор: Конструктор 16.9.2004, 11:30 | ||
Я подразумевал копирайт на текст, ибо закопипастил его оттуда (справка с BCB6) и немножко перевел |
| Автор: LuckLess 16.9.2004, 12:00 | ||
Бегать по текчту и сравнивать посимвольно , это слишком напряжно... проще:
код не проверял , но думаю идея понятна. |
| Автор: Конструктор 16.9.2004, 12:27 |
| 1. char text[]={/*сюда пиши подстроку , которую ищеш*/} В С нельзя инициализировать члены структур и классов таким образом! 2. char input[]; В С нельзя создавать динамические массивы таким образом. Размер этого массива будет неизвестен! 3. input="text";//в котором ты исщеш строку. В С нельзя таким образом присваивать строки строковым массивам! 4. код не проверял Это код не откомпилируется никогда! 5. но думаю идея понятна. Если честно идея совершенно не понятна, а если я понял правильно, то ИМХО идея не верна! sorry |
| Автор: LuckLess 16.9.2004, 12:45 | ||||||||||
ты наверно не допонял. я обЪяснял зачем нужно это поле структуры, вот и вся.
ты наверно не допонял. я обЪяснял зачем нужен этот массив.
ессесно не скомпилится
Ладдно... счаз напишу работающий пример... |
| Автор: mr.DUDA 16.9.2004, 13:29 | ||
гм... ничего не понял... LuckLess предлагает запихнуть строку в структуру, и "бегая по тексту" сравнивать кусок текста со структурой, где лежит образец строки ? При сравнении двух структур - что происходит ? В примере - вообще ничего не произойдёт, т.к. не переопределён оператор "==" для класса (структуры). Но, допустим, напишем мы этот самый оператор "==". И как будем сравнивать поле "text" двух структур ? Функцией "strcmp" ? Тогда не понятно, почему не подходит "strstr", который сработает в 10-20 раз быстрей, чем беготня по строке с множественными вызовами "strcmp". З.Ы. интересно, всё-таки, увидеть работающий пример от LuckLess... |
| Автор: LuckLess 16.9.2004, 14:13 | ||
Предлагаеться приводить кусок строки из input , к структуре (чтобы вырвать кусок строки нужной длинны) а потом сравнивать текстовые поля структур(структуры приведенной из куска текста , и структуры где валяеться текст который ищеш). Добавлено @ 14:18 mr.DUDA Да , strstr будет быстрее , забыл про нее чтото..... Но это удобнее чем алгоритм предложенный Coocky |
| Автор: Конструктор 16.9.2004, 16:42 | ||
Прошу пардона если кого расстроил |