Поиск в файле и вывод найденного на консоль

Друзья, нужна помощь, делаю программу по типу БД, и никак не могу реализовать поиск в файле ( допустим по фамилии), а именно: чтобы при вводе мной слова, допустим "Иванов" программа искала все строки, где содержится это слово и выводила их на консоль. Вот, что смог сделать, но оно ищет только на одной строке и дальше не идет.

fs.open(path, fstream::in | fstream::out | fstream::app);       

while (!fs.eof())
{
    fs.get(c);
    s.push_back(c);     
}
fs.close();

SetConsoleCP(1251);
cin >> find;
SetConsoleCP(866);

int pos = s.find(find);
if (pos == -1)
    cout << "not finded" << endl;
else
    cout << pos;

Ответы (1 шт):

Автор решения: KoVadim

если у Вас есть строка и Вы хотите найти в ней все вхождения подстроки, то нужно использовать перегрузку find, которая вторым параметром принимает позицию, с которой нужно начинать искать. Сам код теперь выглядит где то так

std::string s = "test data test see test";

int x = -1;
while ((x = s.find("test", x+1)) != std::string::npos) {
    std::cout << x << "\n";
}

UPD

Если нужно делать это построчно, тогда код будет где то такой

#include <iostream>
#include <fstream>

int main()
{
    std::ifstream f("myfile.txt");
    if (!f.is_open()) { std::cout << "upss\n"; return 1;} 
    std::string line;
    while(std::getline(f, line)) {
        if (line.find("foo")!=std::string::npos) {
            std::cout << line << '\n';
        }
    }
}

А дальше доводите до нужной кондиции.

→ Ссылка