problem z funkcja find

0

wczytuje dwa stringi a następnie ma wyszukiwać wszystkie wystąpienia jednego ciągu w drugim, od wczoraj nie mogę dojść jak to zrobić. Czyli np. mam ciąg lalalalala i ciąg lala powinno dać na wyjściu 0 2 4 6, a jeśli podciąg nie występuje to odpowiedź NIE.

 #include<iostream>
#include<string>

using namespace std;

int main(){   
string s, x;


while(cin>>s>>x)
{ 
        for(int i=0; i<=s.length()-1; i=i++)  {    

     int pos = s.find(x, pos);
    
    if (pos!=string::npos)
    
    cout<< pos<< endl;
        
        else
        cout<<"NIE";}
    
}}
0
#include <iostream>
#include <string>

using namespace std;

int main()
{
	string a, b;
	cin >> a >> b;
	
	bool found = false;
	int pos = -1;
	for(int i = 0; ; i++)
	{
		string::size_type position = a.find(b, pos + 1);
		
		if(position == string::npos)
			break;
		else
		{
			found = true;
			cout << position << endl;
		}

		pos = position;
	}

	if(!found)
		cout << "Nie znaleziono!\n";

	system("pause");
	return 0;
}

Byćmoże jest prostszy sposób, ale na niego nie wpadłem.

0

dzięki to funkcjonuje super, troszkę tylko zmieniłem pod siebie, wielkie dzięki

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