Подскажите, с помощью какой функции можно определить, сколько раз заданное с клавиатуры слово встречается в файле?
Лесоруб
26.02.2011, 23:00
накатал, вроде пашет, только как реализовать, чтобы поиск проходил без учета регистра?
#include "stdafx.h"
using namespace std;
int main()
{
const int len = 255;
char word[len], line[len];
int branch;
setlocale(LC_ALL, "Russian");
do
{
cout << "Введите слово для поиска: ";
cin >> word;
int l_word = strlen(word);
ifstream fin ("text.txt");
if (!fin)
{
cout << "Ошибка открытия файла." << endl;
return 1;
}
int count = 0;
while (fin.getline(line, len))
{
char *p = line;
while(p=strstr(p, word))
{
char *c=p;
p+=l_word;
if(c!=line)
if (!ispunct(*(c-1)) && !isspace(*(c-1)))
continue;
if (ispunct(*p) || isspace(*p) || (*p == '\0'))
count++;
}
}
cout << endl << "Слово " << word << " встретилось в файле " << count << " раз(а)." << endl;
cout << "\nЧтобы продолжить поиск, нажмите '1'. Чтобы выйти из программы, нажмите '2'.\n";
cin >> branch;
}
while(branch!=EOF);
return 0;
}
Cherinho
28.02.2011, 19:07
без учета регистра,алгоритм такой можешь сделать:считай файл,потом преобразуй его к нижнему/верхнему регистру.потом нужную строку к тому же регистру,и ищи :)