Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23

Функция поиска слов в строке

02.05.2019, 06:16. Показов 5319. Ответов 13

Студворк — интернет-сервис помощи студентам
Ребят, помогите разобраться. Никак не могу сообразить как риализовать данную функцию. P.S нужно использовать библиотеку string.h. Заранее спасибо!!!
Миниатюры
Функция поиска слов в строке  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2019, 06:16
Ответы с готовыми решениями:

Функция поиска слов в строке
Добрый вечер. Мне нужно написать следующие функции: Первые три функции я написал и отладил без проблем: #include...

Функция поиска подстроки в строке
int CChar::strpos(char* sub, char* str) { char* temp = new char; int t=0; for(int i=0; i<strlen(str); i++) { ...

Функция поиска строки в строке
Здравствуйте! Не могли бы вы посмотреть в чем я накосячил в коде ? Не могу понять... Задача: Напишите функцию поиска первого вхождения...

13
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
02.05.2019, 09:09
Напишу функцию поиска с увеличением счетчика, дальше думаю поймете
C++
1
2
3
4
5
6
7
8
9
10
11
int strToWords(const std::string filename, const std::string word)
{
    int i;
    std::ifstream file(filename);
    std::string tmp;
    while(file >> tmp)
    {
        if(word==tmp)
            return i++;
    }
}
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
02.05.2019, 09:47
Лучший ответ Сообщение было отмечено Antonyo как решение

Решение

Antonyo, вот функция
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
29
30
31
32
33
34
35
36
#include <iostream>
#include <cstring>
#include <string_view>
 
const char* delims = "!'\";:?-., ";
 
int strToWords(const char str[81], char* words[40], int wordLength[40])
{
    int word = strcspn(str, delims);
    int ignore = strspn(str, delims);
    int count = 0;
    while (word || ignore)
    {
        if (word)
        {
            words[count] = const_cast<char*>(str);
            wordLength[count] = word;
            ++count;
        }
        str += word + ignore;
        word = strcspn(str, delims);
        ignore = strspn(str, delims);
    }
    return count;
}
int main()
{
    const char str[81] = "fuuck, qweqw-qwe! dsasd\"dsa";
    char* words[40]{};
    int wordLength[40]{};
 
    int count = strToWords(str, words, wordLength);
 
    for (int i = 0; i < count; ++i)
        std::cout << std::string_view(words[i], wordLength[i]) << std::endl;
}
1
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23
02.05.2019, 10:15  [ТС]
Можете объяснить, что делает эта строчка: words[count] = const_cast<char*>(str);
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
02.05.2019, 10:21
Цитата Сообщение от Antonyo Посмотреть сообщение
Можете объяснить, что делает эта строчка
сохраняет указатель на слово, но поскольку у вас в условии исходная строка имеет квалификатор const а массив указателей его не имеет, то его нужно "снять" - это и делает const_cast<char*>(str)
если смущает, можете написать в стиле C words[count] = (char*)str;
1
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
02.05.2019, 10:22
Снятие константности с переменной str, чтобы можно было изменять, но какое при этом будет поведение программы
0
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23
02.05.2019, 10:30  [ТС]
Спасибо большое за помощь!
0
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23
05.05.2019, 17:02  [ТС]
А что именно передается в качестве указателя на слово? Первый символ слова?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.05.2019, 17:04
Цитата Сообщение от Antonyo Посмотреть сообщение
А что именно передается в качестве указателя на слово?
Указатель на первый символ.
0
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23
05.05.2019, 17:16  [ТС]
Спасибо!

Добавлено через 8 минут
А я могу вот так вывести слова из массива?
C++
1
2
3
4
5
for(i=0; i<cout; i++){
     for(j=0; j<wordLenght[i]; j++){
             printf("%с", str[i][j]);
     }
}
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.05.2019, 17:29
Цитата Сообщение от Antonyo Посмотреть сообщение
А я могу вот так вывести слова из массива?
str это одномерный массив содержащий исходную строку, в которой мы ищем слова.
указатели на слова находятся в words
Цитата Сообщение от Antonyo Посмотреть сообщение
i<cout
а это что такое???

Добавлено через 6 минут
Antonyo,
C++
1
2
3
4
5
6
    for (int i = 0; i < count; ++i)
    {
        for (int j = 0; j < wordLength[i]; ++j)
            printf("%c", words[i][j]);
        printf("\n");
    }
1
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23
05.05.2019, 17:47  [ТС]
cout то количество слов
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.05.2019, 18:06
Цитата Сообщение от Antonyo Посмотреть сообщение
cout
не надо так, это имя стандартного потока вывода
0
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 23
05.05.2019, 18:12  [ТС]
Хорошо, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2019, 18:12
Помогаю со студенческими работами здесь

Рекурсивная функция поиска символов '0' в строке
задача в том что дана массив надо найти в строке сколько '0' символов есть после символа 'х'..и по рекурсии.что здесь дополнить? ...

Функция поиска подстроки в строке. Как вернуть указатель?
Подскажите пожалуйста как доделать функцию. Было дано задание изобрести свой костыль) Функцию, которая искала бы подстроку в строке и...

Функция подсчитывает количество слов в строке.
Разработать функцию, которая выполняет ту обработку фрагмента текста, которая определена в Вашем индивидуальном задании. При реализации...

Функция определяющая количество слов в строке
Ребят ,скоро пойду на зачёт,если кто-нибудь может помочь,прошу,помогите. Надо будет написать несложную программу . Какую,напишу...

Функция в строке должна вычислять количество слов (слова разделяются пробелом)
int sum (const char *pS ) { const char *p (pS); int n (0); while ( *p ) { if ( isspace (*p)) ++n; p++; } ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru