Поиск в файле и вывод найденного на консоль
Друзья, нужна помощь, делаю программу по типу БД, и никак не могу реализовать поиск в файле ( допустим по фамилии), а именно: чтобы при вводе мной слова, допустим "Иванов" программа искала все строки, где содержится это слово и выводила их на консоль. Вот, что смог сделать, но оно ищет только на одной строке и дальше не идет.
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';
}
}
}
А дальше доводите до нужной кондиции.