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

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

Восстановить пароль Регистрация
 
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 132
09.05.2013, 12:39     Ищем слово в строке #1
Здравствуйте!
Перерыв интернет, нашел 2 функции, которые ищут подтсроку.
Первая - это strstr, вторая - это метод - find
Начал использовать find, но нашел некоторую особенность. Она ищет вхождения в строке. Т.е., если у нас есть в строке test tet et, и если мне нужно найти слово et, она даст мне 2 варианта: tet и et. Есть ли какая-нибудь функция, которая четко будет искать введенное слово?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 12:56     Ищем слово в строке #2
FacelessShadow, что значит даст Вам два варианта? Функция std::string::find ищет первое вхождение подстроки в строке и возвращает номер этого элемента?как она может вернуть два значения?

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

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

Добавлено через 3 минуты
вот если у Вас будет строка "test1 test fdkjshfkjh' и Вы попробуете найти 'test', то да. оно сначала найдет 'test1'
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 132
09.05.2013, 13:10  [ТС]     Ищем слово в строке #5
metaluga145, да, все верно, снова ошибся. Может быть есть какая-то еще функция? Или придется самому писать?
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 13:12     Ищем слово в строке #6
FacelessShadow, Вам надо найти конкретное слово в строке?
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 132
09.05.2013, 13:27  [ТС]     Ищем слово в строке #7
metaluga145, Да. Чтобы не первое вхождение символов искал, а само слово
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.05.2013, 13:30     Ищем слово в строке #8
FacelessShadow, тогда надо написать этот же поиск, но проверить,чтобы элементы слева и справа были разделителями слов
FacelessShadow
7 / 7 / 1
Регистрация: 07.05.2013
Сообщений: 132
09.05.2013, 13:36  [ТС]     Ищем слово в строке #9
Спасибо! Попробую
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2013, 15:41     Ищем слово в строке
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 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;
}
Yandex
Объявления
09.05.2013, 15:41     Ищем слово в строке
Ответ Создать тему
Опции темы

Текущее время: 21:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru