AdrianQu Opublikowano 19 Sierpnia 2013 Udostępnij Opublikowano 19 Sierpnia 2013 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 Więcej opcji udostępniania...
Xau Opublikowano 19 Sierpnia 2013 Udostępnij Opublikowano 19 Sierpnia 2013 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdrianQu Opublikowano 19 Sierpnia 2013 Autor Udostępnij Opublikowano 19 Sierpnia 2013 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.