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

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

Войти
Регистрация
Восстановить пароль
 
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 136
#1

Ищем слово в строке - C++

09.05.2013, 12:39. Просмотров 411. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Перерыв интернет, нашел 2 функции, которые ищут подтсроку.
Первая - это strstr, вторая - это метод - find
Начал использовать find, но нашел некоторую особенность. Она ищет вхождения в строке. Т.е., если у нас есть в строке test tet et, и если мне нужно найти слово et, она даст мне 2 варианта: tet и et. Есть ли какая-нибудь функция, которая четко будет искать введенное слово?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2013, 12:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ищем слово в строке (C++):

Ввести строку и слово. Вставить введенное слово за пятым словом в строке - C++
Помогите ребят. Нужно написать программу на С++ без использования библиотек <ctype.h>, <string.h> или <stdlib.h>. Ввести строку и...

Ввести строку и слово. Вставить введенное слово за самым коротким словом в строке. - C++
помогите

Найти слово "ТЕКСТ", если такое слово есть,то отпечатать его номер в строке. - C++
В символьной строке, содержащей не более 80 символов, каждые два соседних слова разделены одним пробелом, строка заканчивается символом...

Максимальное слово в строке - C++
Всем привет! Не получается вывести максимальное слово в строке. Функцию strtok использовать нельзя! #include "stdafx.h" #include...

Заменить слово в строке - C++
Пользователь записывает строку в динамический массив. После этого вводит слово, которое он хочет заменить в массиве и слово, на которое...

Повторяется ли слово в строке - C++
Привет, доброжелатель, спасибо, что посетил мою тему! Я сделал первую часть программы, теперь мне осталось выяснить, повторяется ли...

9
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 12:56 #2
FacelessShadow, что значит даст Вам два варианта? Функция std::string::find ищет первое вхождение подстроки в строке и возвращает номер этого элемента?как она может вернуть два значения?

Добавлено через 5 минут
Кроме всего прочего, strstr и std::string::find делают одно и то же.

Добавлено через 16 секунд
Просто с разными аргументами
0
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 136
09.05.2013, 12:57  [ТС] #3
metaluga145, да, все верно. Про 2 варианта это я ошибся. У меня просто особенность в коде такая. Но дела это не меняет. Если в строке будут слова test и test1, то при попытке найти test1, она найдет мне test.
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 13:04 #4
FacelessShadow, не найдет. Чего это она должна его найти?

Добавлено через 3 минуты
вот если у Вас будет строка "test1 test fdkjshfkjh' и Вы попробуете найти 'test', то да. оно сначала найдет 'test1'
0
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 136
09.05.2013, 13:10  [ТС] #5
metaluga145, да, все верно, снова ошибся. Может быть есть какая-то еще функция? Или придется самому писать?
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 13:12 #6
FacelessShadow, Вам надо найти конкретное слово в строке?
0
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 136
09.05.2013, 13:27  [ТС] #7
metaluga145, Да. Чтобы не первое вхождение символов искал, а само слово
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 13:30 #8
FacelessShadow, тогда надо написать этот же поиск, но проверить,чтобы элементы слева и справа были разделителями слов
0
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 136
09.05.2013, 13:36  [ТС] #9
Спасибо! Попробую
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.05.2013, 15:41 #10
FacelessShadow, если понадобится, вот функция, которая ищет и выводит все слова в строке. Нужно лишь добавить свои разделители.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
std::string tokens(const std::string str, const char* tokens = " ,?!:") // tokens - разделители
    {
        size_t beginPos = 0, nextPos = 0;
        std::string word;
        if ((beginPos = str.find_first_of(tokens)) != 0)
        {
            word = str.substr(0, beginPos); // в word содержится текущее слово
             std::cout << word << '\n';
        }
        while((beginPos = str.find_first_of(tokens, nextPos)) != std::string::npos)
        {
            if ((nextPos = str.find_first_of(tokens, beginPos + 1)) == std::string::npos)
                nextPos = str.size();
            if ((nextPos - beginPos) > 1)
            {
                word = str.substr(beginPos + 1, nextPos - (beginPos + 1));
                std::cout << word << '\n';
            }
        } 
        return "true"; 
    }
int main()
{
    tokens(" KSC.sc.sc.m .sdcd ");
    return 0;
}
1
09.05.2013, 15:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2013, 15:41
Привет! Вот еще темы с ответами:

Перевернуть каждое слово в строке - C++
Дана строка, слова отделены пробелами, точками с запятыми, запятыми и т.д. Перевернуть каждое слово в строке. Массив использовать нельзя....

Как считать n-ое слово в строке - C++
Как найти любое (n-ное) слово в строке? Слова(группа слов) разделяются запятыми

Найти минимальное слово в строке - C++
Вводится предложение чтот тип такого &quot; ? where is your... mind?! &quot; необходимо найти слово минимальной длины. вроде как и написал но...

Зеркально развернуть слово в строке. - C++
&quot;Ввести матрицу. Элементы матрицы - строки. Подсчитать сумму кодов символов каждого слова и, если сумма оказалась чётной, развернуть...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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