C++ String mehrfach durchsuchen

Raetsel

Grünschnabel
Hallo, ich hab ein Problem mit einem C++ String und zwar will ich diesen nach einem bestimmten Wort durchsuchen und dann soll zurückgegeben werden, wie oft das Wort in dem String vorhanden ist.
Beispiel:
Code:
string satz = " eins, zwei, eins, drei, eins, zwei, eins";
int anzahl =0;
 
do
{
[size=2]satz.find("eins");
anzahl++;
}
while(satz.find("eins") == string::npos);
cout << anzahl <<;
Da ist jetzt mein Problem, dass ich nicht weiß, wie ich dann weitersuchen soll, ich erhalte als anzahl nur 1 und nicht 4, wie es sein sollte. Wie kann ich dem find sagen, dass es dann hinter dem 1. gefundenen Wort weitersuchen soll? Kann mir jemand das zeigen oder erklären? Danke
 
Code:
#include <string>
#include <iostream>

using namespace std;

int main()
{
    string satz = " eins, zwei, eins, drei, eins, zwei, eins";
    string find = "eins";

    int anzahl = 0;

    string::size_type position = 0;
    while((position = satz.find(find, position )) != string::npos)
    {
        ++position;
        ++anzahl;
    }

    cout << anzahl;
    cin.get();
}
 
Zurück