C++ pozycja znaku w tekscie

0

Hej, mam napisać program, który zwróci pozycję lub pozycje danego znaku we wpisanym ciągu. Niestety udało mi się zrobić tylko tak, że zwraca pierwszą znalezioną pozycję, nie wypisuje następnych. Co trzeba dodać w pętli while żeby znajdowało wszystkie?
Kod:

using namespace std ;
void szukaj(string tekst, char znak )
{
    int pozycja=tekst.find(znak)
while ()
cout << pozycja;
        pozycja = tekst.find(znak, pozycja + 1 );
    }

int main()
{
    string tekst; char znak;
    cin>>tekst>>znak;
    szukaj(tekst, znak);
}
1

Na początek, to się nie kompiluje, (while ()), a żeby funkcja coś zwracała, nie może być void.

0

@lion137: hmm, okej, jak to obejść?

4

zacznij od
https://en.cppreference.com/w/cpp/algorithm/find
https://en.cppreference.com/w/cpp/iterator

w skrócie zastanów się co zwraca std::find i od czego może zaczynać.

No i podstawy c++ się kłaniają.

1
#include <iostream>
#include <vector>
using namespace std;

void showCharPos(const string &text,char chr)
{
	for(size_t found=0;(found=text.find(chr,found))!=string::npos;++found) cout<<found<<endl;
}

vector<size_t> findCharPos(const string &text,char chr)
{
	vector<size_t> ret;
	for(size_t found=0;(found=text.find(chr,found))!=string::npos;++found) ret.push_back(found);
	return ret;
}

int main()
{
	showCharPos("Ala ma kota",'a');
	cout<<endl;
	for(auto pos:findCharPos("Ala ma kota",'a')) cout<<pos<<endl;
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1