Skocz do zawartości

[C++][Pytanie]


Rekomendowane odpowiedzi

Cześć otóż mam problem z rozgryzieniem kawałka kodu

 

#include <string>
#include <iostream>


void szukajWszystkichZnakow( std::string & tekst, char szukanyZnak )
{
    size_t znalezionaPozycja = tekst.find( szukanyZnak );
    if( znalezionaPozycja == std::string::npos )
    {
        std::cout << "Nie znaleziono znaku w tekscie" << std::endl;
        return;
    }


    do
    {
        std::cout << "Znak zostal odnaleziony na pozycji " << znalezionaPozycja << std::endl;
        znalezionaPozycja = tekst.find( szukanyZnak, znalezionaPozycja + 1 );
    } while( znalezionaPozycja != std::string::npos );


}


int main()
{
    std::string naszTekst = "Przyklad z kursu C++ ";
    szukajWszystkichZnakow( naszTekst, 'z' );
    return 0;
}

 

Chodzi dokładnie o pętle w funkcji "szukajWszystkichZnakow"
znalezionaPozycja = tekst.find( szukanyZnak, znalezionaPozycja + 1 );

Dlaczego tutaj musi być + 1. Jak go nie ma to pętla się nie kończy a jak jest to wszystko ok jest

Odnośnik do komentarza
Udostępnij na innych stronach

Ponieważ drugi argument funkcji find określa z którego miejsca ma zacząć szukać. Jeżeli zacznie szukać od tego miejsca w którym został znaleziony poprzedni znak, to znowu na niego trafi.

 

Dzięki. Próbowałem od tygodnia to rozgryźć aż wreszcie chciało mi się to na forum napisać

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum [C++][Pytanie]   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...