[C++] Strings

Wreeze

Ensign
Registriert
Dez. 2004
Beiträge
136
hallo,

die umfangreichen Möglichkeiten Strings zu bearbeiten stehen zwar in meinen Buch, allerdings nicht, wie man sie anwendet.

bsp: Ich will einen String ( char a[]="Alle meine Entchen"; ) Nach Vokalen durchsuchen. Laut Buch kann ich folgendes dafür einsetzten.
strchr. dann steht dort als Syntax:
char *strchr(const char *s, int z);
und als beschreibung:
liefert die Adresse des ersten in s vorkommenden Zeichens z, wobei die Endkennung ebenfalls berücksichtigt wird. Bei Mißerfolg wird 0 zurückgegeben.

Über meinen Kopf befindet sich nun ein großes Fragezeichen.

Wie soll ich das nun anwenden ??
Mit einer For Schleife hab ichs auch versucht, erfolglos.

mfg
 
1. Der C++ Weg wäre:
string a = "Alle meine Entchen";
a.find('buchstabe', iStart);
Zurückgegeben wird die Position von dem Buchstaben in dem String, ansonsten string::npos, iStart ist die Positition ab der er anfangen soll zu suchen. Wenn du also auch das zweite Vorkommen des Buchstabens haben willst, gib als Start das vorherige Ergebnis + 1 mit.
Aber da du dich anscheinend mit dem C-Weg quälen willst:
In meiner kurzen Liste mit C-Funktionen stand nichts drin, vonwegen ab einer bestimmten Stelle suchen. Aber man könnte es so realisieren, indem man die Startadresse des C-Strings einfach erhöht bis zu der Position ab der er suchen soll, also sowas wie a + 4 der Funktion übergeben: cErgebnis = strchr(a + 4, 'buchstabe');

Ich hoffe die Antwort passt irgendwie auf deine Frage. Mir war nicht ganz klar, ob es dir um die Funktion selber ging oder wie du die Vokale zählst oder was auch immer geht. Dieser Thread dürfte evtl auch helfen, da hat Raechaer ein ganz gute Methode zum Zählen vorgestellt: https://www.computerbase.de/forum/threads/c-prob-bei-uebung-mit-string.121583/
 
Zuletzt bearbeitet:
Hat die Funktion noch einen 3. Parameter? Offset - also der Punkt an dem er anfangen soll?

Könnte dann so aussehen:
Code:
char * foo;
foo = strchr(a, "a");
while(*foo != 0) {
  printf("Vokal: %c an Position: %i", *foo, foo-a);
  foo = strchr(a, "a", foo-a);
}

Edit: Oder die Lösung die drüber steht ;) die würde ungefähr so aussehen:

Code:
char * foo;
foo = strchr(a, "a");
while(*foo != 0) {
  printf("Vokal: %c an Position: %i", *foo, foo-a);
  foo = strchr(a + (foo-a), "a");
}
 
Zuletzt bearbeitet:
Zurück
Oben