Platzhalter

Hallo,

ich habe in einem string (var1) ein Wort gespeichert. In einem weitern string (var2) ist ein Buchstabe gespeichert. Jetzt soll überprüft werden, ob der in var2 gespeicherte Buchstabe in dem Wort (von var1) vorkommt.

ich habe es schon so versucht:

if(var1==var2)

funktioniert aber logischerweise nicht. Jetzt habe ich mir überlegt, einfach Platzhalter einzusetzen.

if(var1==\*var2\*)

Funktioniert aber auch nicht, da das * bei C++ kein Platzhalter ist.
Was muss ich jetzt als Platzhalter verwenden? Gut wäre es, wenn der Platzhalter sich so verhält, wie das * in der Eingabeaufforderung unter Win.

Hat jemand eine Idee???

mfg

Doran

Hi Doran.

Es gibt in der string.h die Funktion strchr(cs, c).
Wobei cs für einen String steht,
und c für einen char.
Diese durchsucht cs auf c, und liefert einen Zeiger auf den ersten vorkommenden c in cs, oder NULL, falls kein c vorhanden.

Das funktioniert auf jeden Fall bei einem char* in C.

Du schreibst, dass „* bei C++ kein Platzhalter ist“, von dem her vermute ich also, das var1 von der String-klasse abgeleitet ist.
Diese bietet mehrere Möglichkeiten. Ich denke die einfachste dürfte die Funktion find sein.
Die Beschreibung der Funktion findest du hier: http://www.cplusplus.com/reference/string/string/fin…

Gruß
re-G

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ich habe in einem string (var1) ein Wort gespeichert. In einem
weitern string (var2) ist ein Buchstabe gespeichert. Jetzt
soll überprüft werden, ob der in var2 gespeicherte Buchstabe
in dem Wort (von var1) vorkommt.
ich habe es schon so versucht:

if(var1==var2)

funktioniert aber logischerweise nicht. Jetzt habe ich mir
überlegt, einfach Platzhalter einzusetzen.

if(var1==*var2*)

Funktioniert aber auch nicht, da das * bei C++ kein
Platzhalter ist.
Was muss ich jetzt als Platzhalter verwenden? Gut wäre es,
wenn der Platzhalter sich so verhält, wie das * in der
Eingabeaufforderung unter Win.

In Ergänzung zu re-G’s Anmerkung könntest Du sog.
„Reguläre Ausdrücke“ verwenden. Das ist zwar nicht
exakt so wie in der Eingabeaufforderung - aber dafür
besser.

Ein Ausdruck für „Y“ in „blabla blaba Y blabla“
wäre „.*Y.*“, also „.*“ statt „*“ mit einer etwas
anderen Bedeutung. Wenn man aber nur einen Buchstaben
ohne weitere Bedinguneg sucht, kann man diesen ‚as is
verwenden:

#include 
#include 

 using namespace std;
 using namespace boost;
 
 int main()
{
 char var1[] = "Das ist ein Text mit Y drin.";
 char var2[] = "Y";

 if( regex\_search(var1, regex(var2)) ) { // "Y" _as is_
 cout 



> Hat jemand eine Idee???


s.o.

Um das zum Laufen zu bekommen, müßtest
Du entweder Boost::Regex
http://www.boost.org/doc/libs/1\_36\_0/libs/regex/doc/html/index.html
http://www.boostpro.com/products/free

Oder die moderne -Erweiterung aus dem TR1 
einbinden (http://en.wikipedia.org/wiki/Technical\_Report\_1#Regular\_Expressions)

Das klappt sogar bei Dev-C++ ohne Probleme.
http://www.bloodshed.net/dev/devcpp.html
(http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2\_setup.exe)

Grüße

CMБ

Danke
Hallo,

ok, vielen Dank, ich habe es jetzt erfolgreich mit „find“ gelöst!

-Doran