String
-
Hallo Leute! Möchte einen String mit einem text in der if() funktion vergleichen! Aber nicht normal wie:
string string1; if(string1.compare("Test") == 0) { //Code }sondern ich will nur einen Teil des String vergleichen der an einer unbekannten Stelle steht. Also z.B. wenn der String "aaaaaTestaa" oder "aTestaaaaaaaaa" lautet soll das Programm nur nach "Test" schauen. Ist das überhaut möglich?

Danke im voraus! Euer cpp_1
-
Ja, mit string::find ist das möglich.
-
suchen vieleicht ?
return (std::find(str.begin(), str.end(), _T("Test")) != std::n_pos) ? true : false;
-
Danke!
-
Ich würde es aber gerne in einen if() Befehl packen! Wie muss ich es dann machen?
-
cpp_1 schrieb:
Ich würde es aber gerne in einen if() Befehl packen! Wie muss ich es dann machen?
du nimmst das von Mr Evil:
Mr Evil schrieb:
return (std::find(str.begin(), str.end(), _T("Test")) != std::n_pos) ? true : false;und schreibst es um:
if(std::find(str.begin(), str.end(), _T("Test")) != std::n_pos) { return true; } else { return false; }evt. solltest du dir mal ein c++ tutorial angucken und dir die grundlagen aneignen zu kontrollstrukturen

PS.: Es gibt keinen "if() befehl"!
-
frechheit - das is eine verletzung des copyright #ggg
-
Ich habe ein Toutorial schon Angefangen und wollte das mal ausprobieren was ich schon können sollte. Konnte es aber halt doch nicht!
Aber Danke für den Code und den Hinweiß!Euer cpp_1
-
Aber muss jetzt noch mal Fragen (Bin einfach ein ziemlicher Anfänger): Muss ich eine bestimmte Datei includieren??? Mein Compiler zeigt nämlich an (übrigens Borland C++ Builder 6) n-pos ist kein element von std?? Hilfe! Check' das nich'!
-
das muss ja auch ::npos heißen...da hat sich bestimmt nur jemand verschrieben

-
heißt es ja auch:
if(std::find(string1.begin(), string1.end(), _T("Test")) != std**::n_pos**) {
return true;
} else {
return false;
-
Es geht auch mit
if(std::find(string1.begin(), string1.end(), _T("Test")) != std::npos) {
return true;
} else {
return false;nicht!!????

-
dann schreib es aber auch richtig

EDIT:
sorry muss so heißen
string::npos
-
Jetzt gibts ne andere Fehlermeldung:
Konvertierierung von 'string::_$HQ nach char *' nicht möglich
Was ist da los? Mach ich da was extrem falsch?

-
Was macht ihr da fürn Blödsinn?

Entweder
if (std::find(string1.begin(), string1.end(), "Test") != string1.end())oder
if (string1.find("Test") != std::string::npos)
-
1. Möglichkeit: Fehlermeldung.
2. Möglichkeit: Geht!Hurra! Endlich! Vielen Dank!
-
cpp_1 schrieb:
1. Möglichkeit: Fehlermeldung.
Sorry. Die Lösung mit std::find ist natürlich generell quatsch, da man damit ein Element im Bereich sucht. Und die Elemente von String sind Chars, keine Strings.
Aber dafür gibt es ja die Funktionen von string

-
Mr Evil schrieb:
suchen vieleicht ?
return (std::find(str.begin(), str.end(), _T("Test")) != std::n_pos) ? true : false;abgesehen davon, dass der OP das anscheinend in einer if-bedingung braucht, wäre es für return nicht übel, einfach
? true : false;wegzulassen.
-
Danke für die Rückmeldung!
-
bzgl stding.find || std::find
in diesem fall stimmts, hab grad in meinen eigenen code nachgeschaut, da benutz ich ueberall die string.find methode, war das nur mit std:: gewohnt, sonst nichts #ggbzgl ? true : false
ist nur so eine angewohnheit - kann man machen oder auch weglassen - is wurscht #gg