@michadimin

Как найти внутри текстового файла слово?

Просто найти слово в тексте и в зависимости от того, найдено оно или нет выполнить определённые действия
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Bbllaaddee
Создаёшь поток чтения из файла и считываешь до тех пор, пока слово не найдётся.
Если файл закончился, ничего не делаешь.

Для этого нужно операцию чтения засунуть в условие цикла while. Работает это потому, что оператор считывания может неявно преобразовываться в bool.

Пример:
#include <string>
#include <fstream>

int main()
{
    std::ifstream inp("file.txt");
    std::string word;
    while(inp >> word)
    {
        if(word == "нужное_слово")
        {
            // сделать что-то
            break;
        }
        else { continue; }
    }
}
Ответ написан
Комментировать
Открываете файл, юзаете getline, ищете с помощью find, выполняете необходимые действия, профит.

getline - www.cplusplus.com/reference/string/string/getline

find - www.cplusplus.com/reference/string/string/find
Ответ написан
Комментировать
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Можно использовать алгоритмы поиска подстроки в строке. То, что вы ищите в файле - ничего не меняет.

Быстрые алгоритмы есть: Кнута-Морриса-Пратта, Бойера-Мура. Там есть примеры реализации алгоритма в википедии прямо кодом на Си. Эти алгоритмы сканируют строку текст посимвольно. Эту часть нужно тупо заменить вводом очередного символа из файла (не забудьте сделать буферизацию, если ваш ЯП этого не делает сам).

Ну, или, если файл не большой, то можно тупо прочитать весь файл в строку и запустить какой-нибудь встроенный метод поиска подстроки в строке. Большинство ЯП уже реализуют какой-либо быстрый метод поиска.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы