C++ String Aufgabe

ich habe eine Stringverarbeitungsaufgabe in C++ mit der ich nicht ganz zurecht komme.
Würde mich über Antworten/Erklärungen u Lösungsvorschläge/Korrekturen freuen.

Aufgabe:
Erstellen Sie eine Funktion einfuegen mit folg. Funktionsprototypen:
string einfuegen(string str1,string str2,string str3);

Die Funktion sucht im Str1 nach allen Stellen an denen der Teilstring str2 vorkommt und fügt direkt hinter jedem gefundenen str2 den str3 in str1 ein.Der Modifizierte String soll als Return Wert zurückgegeben werden.

Meine Lösung:

#include
#include
using namespace std;
string einfuegen(string str1,string str2,string str3)
{
string::size_type pos=0; //Anfangsposition
string str_mod; //mod. String Deklarierung

while(1)
{
pos=str1.find(str2);

if(pos==string::npos) //wenn kein str2
{
break;
}
else
{
str_mod=str1.insert(pos+str2.size(),str3); //str3 für str2 in str 1 einfuegen
}
pos++;
}
return str_mod;

}

Hauptfunktion:
Void Main()
{
string s1(„Hallo Frau Maier, Hallo Herr Maier“);
string s2(„Hallo“);
string s3(„Guten Tag“);

string str_mod;

str_mod=einfuegen(s1,s2,s3);

cout

Moin moin ,

Aufgabe:
Erstellen Sie eine Funktion einfuegen mit folg.
Funktionsprototypen:
string einfuegen(string str1,string str2,string str3);

finde alle str2 in str1 und ergänze mit str3.

Meine Lösung:

wir nehmen erstmal den syntax von string::find
size_t find ( const string& str, size_t pos = 0 ) const;
size_t find ( const char* s, size_t pos, size_t n ) const;
size_t find ( const char* s, size_t pos = 0 ) const;
size_t find ( char c, size_t pos = 0 ) const;

wobei pos der start buchstabe ist wo angefangen werden soll zu suchen.

// wiederhole unendlich

while(1)
{

// finde str2 ab position 0

pos=str1.find(str2);

// wenn position am ende angekommen

if(pos==string::npos) //wenn kein str2
{

// beende die unendliche schleife

break;
}
else
{

// einfügen von str3 an aktueller fund position + dem gefundenen , weil soll ja dahinter

str_mod=str1.insert(pos+str2.size(),str3); //str3 für str2 in
str 1 einfuegen
}

// position 1 weiter.

pos++;
}
return str_mod;

}

Wenn ich das unendlich ausführe , dann bleibt es beim find immer dabei das von position 0 aus gesucht wird .

da bringt es auch nichts das ergebnis pos einfach mal zu inkrementieren, wird ja eh wieder mit dem ersten fund überschrieben.