Moim zadaniem jest napisać program, który odczyta zawartość pliku, a następnie wypisze na ekranie tylko te wiersze, w których znajduje się wyraz wprowadzony przez użytkownika.
W sumie nic trudnego ale jak na złość coś mi nie wychodzi. Oto mój kod:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
bool szukaj( string Tekst, string szukanaFraza )
{
cout << "test" << endl;
size_t znalezionaPozycja = Tekst.find( szukanaFraza );
if( znalezionaPozycja == string::npos )
return false;
else
return true;
}
bool wczytanie_pliku( string & chcia_plik )
{
ifstream plik;
plik.open( chcia_plik.c_str() );
if( !plik.good() )
{
return false;
}
string tekst;
while( getline( plik, tekst ) )
{
cout << tekst << endl;
}
cout << endl;
cout << "Jesli chcesz wyszukac fraze w tekscie podaj 'T', jesli nie, podaj 'N'" << endl;
string podana;
cin >> podana;
cin.clear();
cin.sync();
if( podana == "T" )
{
cout << "Podaj fraze ktora chcesz wyszukac:\n";
string a;
getline( cin, a );
while( std::getline( plik, tekst ) )
{
if( szukaj( tekst, a ) )
{
cout << tekst << endl;
}
else continue;
}
}
plik.close();
return true;
}
int main()
{
do {
cout << "Podaj nazwe pliku tekstowego ktory chcesz wczytac. Przykl.: 'x.txt' itp." << endl;
cout << "Napisz 'end' jesli chcesz zakonczyc dzialanie programu." << endl;
string chciany_plik;
cin >> chciany_plik;
cin.clear();
cin.sync();
string end = "end";
if( chciany_plik == end )
{
return false;
}
cout << endl;
if( !wczytanie_pliku( chciany_plik ) )
{
cout << "Nie znaleziono" << endl;
}
} while( true );
}
Problem pojawia się po podaniu literki T(zgadzamy się na wyszukiwanie frazy w tekście). Oto kod programu który sprawia mi problem:
while( std::getline( plik, tekst ) )
{
if( szukaj( tekst, a ) )
{
cout << tekst << endl;
}
else continue;
}
Za nic nie mogę pojąć co robię źle i czemu funkcja
szukaj(tekst, a)
nie działa, a uważam że nie działa bo wdrążyłem do niej instrukcję z cout-em który się nie wyświetla. Wiem że w zadaniu również wymagają aby została wyświetlona linijka tekstu w której znajduje się szukany wyraz ale chciałbym mimo to aby została wyświetlana pozycja na której się znajduje dane słowo.
Męczę się z tym jak skończony idiota od jakiś 4 dni i nie mogę sobie poradzić. Proszę o pomoc.