Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyjaśnienie kodu z kursu wyszukania frazy w tekście

Ostatnio zmodyfikowano 2017-09-06 21:08
Autor Wiadomość
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:

C/C++
#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?:

C/C++
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.
P-164644
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.
P-164647
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ź!
P-164649
« 1 »
  Strona 1 z 1