найти строки (из файла), содержащие указанное слово - PullRequest
0 голосов
/ 05 октября 2019

Я не могу понять, как перечислить строки, которые содержат указанное слово. Мне предоставлен файл .txt, содержащий строки текста.

Пока я зашел так далеко, но мой код выводит количество строк, которые есть. В настоящее время это решение имеет смысл в моей голове:

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;


void searchFile(istream& file, string& word) {

   string line;
   int lineCount = 0;

   while(getline(file, line)) {
     lineCount++;
     if (line.find(word)) {
       cout << lineCount;
     }
  }
}

int main() {
  ifstream infile("words.txt");
  string word = "test";
  searchFile(infile, word);
} 

Однако этот код просто не дает ожидаемых результатов. Выходные данные должны просто указывать, в каких строках есть указанное слово.

1 Ответ

0 голосов
/ 05 октября 2019

Итак, подведем итоги решения из комментариев. Это как раз функция std::string find. Он не возвращает ничего совместимого с логическим значением, он либо возвращает индекс, если найден, либо std::string::npos, если не найден, что является специальной константой.

Так что называть его традиционным способом if (line.find(word)) неправильно, но вместо этого это следует проверить следующим образом:

if (line.find(word) != std::string::npos) {
    std::cout << "Found the string at line: " << lineCount << "\n";
} else {
    // String not found (of course this else block could be omitted)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...