Wyjaśnienie kodu z kursu wyszukania frazy w tekście
Ostatnio zmodyfikowano 2017-09-06 21:08
wgnsy123 Temat założony przez niniejszego użytkownika |
Wyjaśnienie kodu z kursu wyszukania frazy w tekście » 2017-09-06 20:50:43 Na start kod: #include <string> #include <iostream>
void szukajWszystkichFrazOdKonca( std::string & tekst, std::string szukanaFraza ) { size_t znalezionaPozycja = tekst.rfind( szukanaFraza ); if( znalezionaPozycja == std::string::npos ) { std::cout << "Nie znaleziono frazy w tekscie" << std::endl; return; } do { std::cout << "Fraza zostala odnaleziona na pozycji " << znalezionaPozycja << std::endl; if( znalezionaPozycja >= szukanaFraza.size() ) znalezionaPozycja = tekst.rfind( szukanaFraza, znalezionaPozycja - szukanaFraza.size() ); else znalezionaPozycja = std::string::npos; } while( znalezionaPozycja != std::string::npos ); }
int main() { std::string naszTekst = "Przyklad z kursu C++ (http://cpp0x.pl) - najlepszy kurs C++ w Internecie!"; szukajWszystkichFrazOdKonca( naszTekst, "C++" ); return 0; }
Przybliży ktoś bardziej jak działa to?: do { std::cout << "Fraza zostala odnaleziona na pozycji " << znalezionaPozycja << std::endl; if( znalezionaPozycja >= szukanaFraza.size() ) znalezionaPozycja = tekst.rfind( szukanaFraza, znalezionaPozycja - szukanaFraza.size() ); else znalezionaPozycja = std::string::npos; } while( znalezionaPozycja != std::string::npos );
Ponieważ zastanawiam się co się dzieje dokładnie po IF, miesza mi się to wszystko, z góry dziękuje. |
|
Rashmistrz |
» 2017-09-06 21:04:43 Tamten if sprawdza czy pozostała część stringa jest dłuższa od szukanej frazy. Jeśli pozostała część stringa jest krótsza od szukanej frazy to oznacza, że tam szukana fraza się już nie zmieści i nie ma czego dalej tam szukać.
EDIT: Tak poza tym to jest sposób autora by nie wyjść poza początek stringa. |
|
wgnsy123 Temat założony przez niniejszego użytkownika |
» 2017-09-06 21:08:14 Faktycznie, czasami chyba potrzebuje przerwy od komputera żeby pomyśleć logicznie, ale już rozumiem, dziękuje za odpowiedź! |
|
« 1 » |