Суть проблемы заключается в следующем:
Поиск в массиве строкового типа значения строкового типа, считанного из текстового файла, и вывод числа случаев и напечатайте количество строк, в которых встречается ключевое слово.
Ожидаемый результат:
Keyword: union
Total # of keyword occurrences: 87
Total # of lines with occurrences: 29
Ниже описана функция, которую я написал для этого.
void search(int IDs[], string posts[], int size)
{
string keyword = "";
int postCount = 0;
int lineCount = 0;
int pos = 0;
bool found = false;
cout << "Enter keyword: " << endl;
cin >> keyword;
for(int i = 0; i < size; i++)
{
while((pos >= 0 && pos <= size))
{
pos = posts[i].find(keyword,pos);
lineCount++;
pos++;
}
if((pos >= 0 && pos <= size-1))
{
postCount++;
}
}
cout << "Total # of Occurances: " << lineCount + postCount << endl;
cout << "Total # of Posts: " << postCount << endl;
}
Я запустил код выше и получил вывод ниже:
Keyword: union
Total # of keyword occurrences: 1
Total # of lines with occurrences: 0
Я несколько раз спрашивал своего профессора, что делать, и он сказал мне, что я должен найти ключевое слово в каждой строке, а затем начинайте с pos+1
в строке, чтобы продолжить эффективный поиск следующих вхождений и отслеживать, сколько раз я «нахожу» ключевое слово, и если я его не нахожу, то не считайте линия вообще.