Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++][Pytanie]


Rekomendowane odpowiedzi

Opublikowano

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

Weteran
Opublikowano

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.

Opublikowano

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ć

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...