• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

C++: Strings nach Buchstaben durchsuchen...

Stryke89

Spiele-Novize/Novizin
Registriert
22.03.2005
Beiträge
152
Reaktionspunkte
0
Hi Leute...
Ich hab da einkleines Problem mit C++.
Ich möchte in einem String nach einem Buchstaben suchen, den der Benutzer eingegeben hat:
(...)
string wort = "test";
string eingabe;
int ergebnis;

cin >> eingabe;
ergebnis = wort.find(eingabe, 0);
cout << ergebnis ;
(...)
Wenn der Benutzer in diesem Beispielt " t " eingibt, lautet das Ergebnis "0", da der Buchstabe t an erster Stelle gefunden wurde.
Das Problem ist, das es in dem Wort auch noch ein zweites t gibt.
Ich möchte alle t's im Wort angezeigt kriegen.
Gibt es eine Funktion mit der man alle Stellen anzeigen kann, wo dieser Buchstabe vorkommt?
Ich habe schon versucht mehrmals in dem Wort zusuchen, und zwar immer von der Stelle aus, wo das letzte mal der Buchstabe gefunden wurde. Das ist aber eine sehr umständliche Methode....
 
Mein Versuch ist nicht sehr elegant funktioniert aber. Die Funktion die ich benutzt habe ist strchr. Die Funktion sucht vom Anfang eines Wortes an nach dem vorkommen eines Strings. Im Fall meines Beispiels nach t und nach s. Du musst meinen "Source" nur ein wenig "um stricken" so das erst nach Eingabe eines Wortes oder Satzes in die Konsole nach dem vorkommen gesucht wird. Denn genau das willst Du ja oder? Falls dem so ist sollte die Aufgabe nicht mehr all zu kompliziert sein denke ich. ;-)

Code:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int main ()
	{
  char str[] = "Terraformtestabstraktionsverfahrenstarnung";
  char * txt;
	
  printf ("Suche 't' in \"%s\"...\n",str);
  txt=strchr(str,'tT');

  while (txt!=NULL)
  {
    printf ("Gefunden an Stelle %d\n",txt-str+1);
    txt=strchr(txt+1,'t');
	}

  printf ("\nSuche 's' in \"%s\"...\n",str);
  txt=strchr(str,'s');

  while (txt!=NULL)
  {
	  printf ("Gefunden an Stelle %d\n",txt-str+1);
		  txt=strchr(txt+1,'s');
  }
  getchar();
  return 0;
}
 
Zurück