C++ Strings - "find"-Methode



  • Hallo Leute,

    ich zeig am besten erstmal ein wenig Code:

    ifstream datei;
    string zeile;
    
    datei.open("Hallo.txt", ios::in);
    getline(datei,zeile);
    

    Jetzt hole ich mir "eine" Zeile, gleichzeitig auch die einzigste Zeile meiner Datei, und suche mit dem Befehl "find" nach einem bestimmten String in meiner Variablen "zeile".
    Jetzt steht der obige Code in einer Funktion, die als Parameter noch eine Zahl mitbekommt, die meiner Funktion sagt, ab welcher Stelle ein bestimmter Code teil ausgeführt wird.
    Diese Stelle wird mittels "find" realisiert.

    Also sagen wir mal in dieser Zeile steht:

    "Hallo mein name ist Eric Donald. Ich wohne in der Nähe von Bremen. Mein Vater Donald ...."

    Jetzt habe ich meiner Funktion die Zahl 2 übergeben und suche nach "Donald" und erst ab dem zweiten Donald, soll mir ein bestimmter Code ausgeführt werden.
    Also habe ich eine Schleife in der Funktion, die bis 2 läuft und die den "find" Befehl ausführt. Normalerweise müsste er ja die Position des zweiten "Donalds" ermitteln, aber er bleibt immer beim ersten Donald stehen.



  • find() sucht, wenn du nichts anderes angegeben hast, immer vom Anfang des Strings an. Um das zu ändern, mußt du ihm sagen, ab welcher Position er anfangen soll zu suchen:

    size_t counted_find(const string& suchzeile,const string& suchwort,int nummer)
    {
      size_t pos=suchzeile.find(suchwort);
      for(int i=1;i<nummer&&pos!=string::npos;++i)
         pos=suchzeile.find(suchwort,pos+1);
      return pos;
    }
    


  • CStoll schrieb:

    find() sucht, wenn du nichts anderes angegeben hast, immer vom Anfang des Strings an. Um das zu ändern, mußt du ihm sagen, ab welcher Position er anfangen soll zu suchen:

    size_t counted_find(const string& suchzeile,const string& suchwort,int nummer)
    {
      size_t pos=suchzeile.find(suchwort);
      for(int i=1;i<nummer&&pos!=string::npos;++i)
         pos=suchzeile.find(suchwort,pos+1);
      return pos;
    }
    

    Cool dankeschön.
    Wofür steht denn size_t ? Same wie int ?



  • hustle schrieb:

    Wofür steht denn size_t ? Same wir int ?

    size_t ist ein im ANSI C Standard festgelegt als (sinngemäß) "vorzeichenloser Ganzzahltyp, der ausreichend für beliebige Größenangaben ist" (im MSVC ist das ein 'unsigned int').


Anmelden zum Antworten