Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 17
1

Найти слово в строке

17.03.2019, 10:20. Показов 4944. Ответов 9
Метки нет (Все метки)

Можно с помощью функции find() это сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2019, 10:20
Ответы с готовыми решениями:

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

Найти количество слов в строке; найти самое длинное слово, заканчивающееся на заданную букву
Дана строка текста, в которой слова разделены пробелами. Необходимо: ...

В строке S1 найти слово DOM
В строке S1 найти слово DOM, если оно есть то вывести все номера позиции

Найти максимальное слово в строке
Программа правильно определяет длину слов, но почему-то она проверяет только первое слово, но...

9
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 17
17.03.2019, 10:43  [ТС] 2
Ввести строку, затем ввести слово и проверить его наличие в раннее введеной строке, если оно присутствует в строке то что-нибудь вывести
0
Модератор
Эксперт С++
10511 / 8742 / 5283
Регистрация: 18.12.2011
Сообщений: 23,382
17.03.2019, 10:48 3
Лучший ответ Сообщение было отмечено adam3425 как решение

Решение

Вот это Вы имели ввиду?:
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
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    string s1, t;
    cout << "enter string:";
    getline(cin, s1);
    istringstream ss(s1); // создаем поток ввода из строки
    vector<string> v;
    while (ss >> t)
        v.push_back(t); // читаем из потока по словам и заносим в вектор
    string word = "hello"; // задаем слово для поиска
    auto res = find(v.begin(), v.end(), word);  // ищем
    if (res != v.end())
        std::cout << *res << std::endl;
    else
        cout << word << " not present\n";
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 17
17.03.2019, 10:50  [ТС] 4
Примерно это, только как-нибудь это упростить
0
Модератор
Эксперт С++
10511 / 8742 / 5283
Регистрация: 18.12.2011
Сообщений: 23,382
17.03.2019, 10:52 5
Куда уж проще....
Добавил комментарии
0
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 17
17.03.2019, 11:06  [ТС] 6
Что делает vector <string> v
И зачем потом заносить туда значения
0
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 17
22.03.2019, 18:18  [ТС] 7
В чем ошибка:
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
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    string s1, t;
    cout << "enter string:";
    getline(cin, s1);
    istringstream ss(s1); // создаем поток ввода из строки
    vector<string> v;
    while (ss >> t)
        v.push_back(t); // читаем из потока по словам и заносим в вектор
    string word = "hello"; // задаем слово для поиска
    auto res = find(v.begin(), v.end(), word);  // ищем
    if (res != v.end())
        std::cout << *res << std::endl;
    else
        cout << word << " not present\n";
    system("pause");
    return 0;
}
0
Модератор
Эксперт С++
10511 / 8742 / 5283
Регистрация: 18.12.2011
Сообщений: 23,382
22.03.2019, 18:26 8
Не вижу ошибок. Приведите их текст.
Единственное, что может не компилироваться
Цитата Сообщение от adam3425 Посмотреть сообщение
auto res = find(v.begin(), v.end(), word); // ищем
Напишите явно
C++
1
string::iterator res = find(v.begin(), v.end(), word);
0
0 / 0 / 0
Регистрация: 16.02.2019
Сообщений: 17
22.03.2019, 18:51  [ТС] 9
ooo.cpp: In function ‘int main()’:
ooo.cpp:17:10: error: ‘res’ does not name a type
auto res = find(v.begin(), v.end(), word); // ищем
^
ooo.cpp:18:9: error: ‘res’ was not declared in this scope
if (res != v.end())
это может быть ошибка редактора древего?

Добавлено через 20 минут
мне это не помогло, это может быть связано с редактором кода?
0
5942 / 4037 / 2337
Регистрация: 18.12.2017
Сообщений: 12,624
22.03.2019, 22:01 10
как вариант (если слов несколько найдёт индекс первого):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s, word;
    cout << "String:\n";
    getline(cin, s);    
    cout << "Word:\n";
    cin >> word;
    
    s=" " + s + " ";
    word=" " + word + " ";
    
    if (s.find(word)!=string::npos) 
    cout << "Index=" << s.find(word) << " (position=" << s.find(word)+1 << ")" <<"\n";
    else cout << "Not found\n";
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2019, 22:01

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

Найти в строке наименьшее слово
дано string a(&quot;masha ila kashu&quot;); найти в строке наименьшее слово

Найти самое длинное слово в строке
Здравствуйте! Нужно найти самое длинное слово в строке, введённой с клавиатуры. Желательно самый...

Найти самое длинное слово в строке
Задача- Вывести самое длинное слово и его порядковый номер в исходной строке (Признак конца строки...


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

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

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