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

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

Войти
Регистрация
Восстановить пароль
 
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
#1

Поиск слов в файле - C++

02.07.2010, 20:11. Просмотров 911. Ответов 6
Метки нет (Все метки)

есть файл с текстом, нужно написать програму которая пригласит пользователя ввести слово и будет выводить предложения из файла в которых присудствует данное слово!!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2010, 20:11     Поиск слов в файле
Посмотрите здесь:

Поиск слов в файле. - C++
Помогите чё-то не получается написать программу выполняющую поиск строки в файле ,содерж.заданное число ключевых слов... заранее...

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

Поиск слов в файле - C++
Попытался сделать вот эту: http://www.cyberforum.ru/cpp-beginners/thread151235.html Программу... Сложность ее по-моему мнению, в том,...

Поиск слов в файле, начинающихся с - C++
Необходимо: прочесть текст в файле, вывести все слова, начинающиеся с некоторой буквы. В данном случае - "w". Искать обязательно через...

Поиск и замена слов в файле txt - C++
Как заменить и найти слова в файле txt на С++. То есть есть файл вот такой структуры AAA БББ BBB 111 222 ыыы

Поиск наиболее часто встречающихся слов в файле - C++
Дан символьный файл f, содержащий произвольный текст длиной более 5000 слов. Слова в тексте разделены пробелами и знаками препинания....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.07.2010, 04:10     Поиск слов в файле #2
Поиск зависит от регистра!

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
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <fstream>
int main()
{
    FILE*f=fopen("D:\\Test.txt", "r");
    if (!f)
    {
        std::cout<<"File is not open\n"<<'\n';
        return 2;
    }
    char SubStr[100];
    std::cout<<"Enter substring\n";
    std::cin.getline(SubStr, 100);
    char Str[256];
    while (fgets(Str, 256, f)!=0)
    {
    char*Ptr;
    Ptr=strtok(Str, ".");
    if(strstr(Ptr, SubStr)!=0)
        std::cout<<Ptr<<'\n';
    while (Ptr)
    {
        Ptr=strtok(0, ".");
        if (Ptr)
        {
            if (strstr(Ptr, SubStr)!=0)
                std::cout<<Ptr<<'\n';
        }
    }
    }
    return 0;
}
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
03.07.2010, 06:13     Поиск слов в файле #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
о, как!
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <list>
#include <strings.h>
#include <cctype>
 
// искалка слова в строке незвисимо от регистра
class WordFinder {
    std::string m_word;
    std::string cutWord(const std::string & w){
        static const char * delim = ".,;:!?&@[]{}()|/\\";
        size_t start_pos = w.find_first_not_of(delim);
        if ( start_pos == std::string::npos )
            return std::string("");
        size_t end_pos = w.find_last_not_of(delim);
        return w.substr(start_pos, end_pos - start_pos + 1);
    }
public:
    WordFinder(const std::string & wrd) : m_word(wrd) {}
    bool testStr (const std::string & s) {
        std::istringstream ist(s);
        std::string buf;
        while ( ist >> buf )
            if ( ! strcasecmp(cutWord(buf).c_str(), m_word.c_str()) )
                return true;
        return false;
    }
};
 
int main(){
    std::string file_name;
    std::cout << "Enter name for input file: ";
    std::getline(std::cin, file_name);
    std::ifstream ifs(file_name.c_str());
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open file for input" << std::endl;
        return 1;
    }
 
    std::list<std::string> list;
    std::string sentence("");
    char ch;
    bool inside = false;
    const std::string sentence_ends(".!?");
 
    while ( ifs.get(ch) ){
        if ( isspace(ch) ){
            if ( ! inside )
                continue;
            else if ( ch == '\n' )
                ch = ' ';
        }
        inside = true;
        sentence += ch;
        if ( sentence_ends.find(ch) != std::string::npos ){
            list.push_back(sentence);
            inside = false;
            sentence = "";
        }
    }
    ifs.close();
    if ( ! sentence.empty() )
        list.push_back(sentence);
 
    std::string wrd;
    std::cout << "Word to find: ";
    std::cin >> wrd;
    WordFinder wf(wrd);
    for ( std::list<std::string>::const_iterator i = list.begin(); i != list.end(); ++i )
        if ( wf.testStr(*i) )
            std::cout << *i << std::endl;
 
    return 0;
}
"папроще" не переделаю!
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.07.2010, 10:16     Поиск слов в файле #4
easybudda, А если не используя СТЛ, как я сделал катит? Так же есть насколько я понимаю возможность перевести обе строки в нижний регистр целиком, и тогда уже сравнивать, но будет ли это решением?
x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
03.07.2010, 11:18     Поиск слов в файле #5
для сравнивея строк в люмом регистре можно использовать strcmpi
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
03.07.2010, 14:23     Поиск слов в файле #6
Цитата Сообщение от Lavroff Посмотреть сообщение
как я сделал катит?
Не-а... Во-первых так из предложений точки попропадают, но это ладно... Хуже другое: функция strstr() в слове "экран" слово "кран" найдёт...

Цитата Сообщение от Lavroff Посмотреть сообщение
перевести обе строки в нижний регистр целиком
Можно и так, но возни больше... А чем стандартная strcasecmp() из strings.h не понравилась? В мелкостудии вон ещё велосипедов полно типа _stricmp()...

Цитата Сообщение от x-954377 Посмотреть сообщение
для сравнивея строк в люмом регистре можно использовать strcmpi
strcmpi

This POSIX function is deprecated beginning in Visual C++ 2005.Use the ISO C++ conformant _stricmp instead.
MSDN
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2010, 21:12     Поиск слов в файле
Еще ссылки по теме:

Поиск самых длинных и комбинированных слов в файле - C++
Здравствуйте. У меня есть такая задача: 1. Найти 2 самых длинных комбинированных слова 2. Найти все комбинированные слова в файле ...

Смена слов в файле - C++
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова

Количество слов в файле. С++ - C++
Здравствуйте. Требуется посчитать количество слов в файле. Искала по темам, но что ни делаю - выдаёт ошибки. Пишу строковую переменную ...

Перемешивание слов в файле - C++
Всем привет :) Мне требуется написать программу, которая формирует текстовый файл на основе двух заданных путем &quot;перемешивания&quot; слов этих...


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

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.07.2010, 21:12     Поиск слов в файле #7
easybudda, Ну там stricmp. А вот strcasecmp не нашел... В двух книжках не написана, а в мсдн ночью поленился копаться. Спасибо)
Yandex
Объявления
03.07.2010, 21:12     Поиск слов в файле
Ответ Создать тему
Опции темы

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