Strings vergleichen
-
aber es muss doch auch eine möglichkeit geben strings irgend wie umzuwandeln so das sie verglichen werden können.
Zum vergleichen musst du nix umwandeln:
string str1("Hallo"), str2("hallo"); if (str1 == str2) ...
Falls du ein schlechtes Anfänger Buch hattest und die string nicht beschreiben wurde: string befindet sich in <string> und steht im Namensraum std.
-
beim switch geht das trotzdem nicht
-
Natürlich nicht. Und daran wird sich auch nie etwas ändern.
linux voerschlag ist doch wohl der größte Blödsinn:
if (str1 == str2) a = 1; else if (str1 == str3) a = 2; switch (a) { case 1: ... case 2: ... }
Warum dann nicht direkt
if (str1 == str2) ... else if (str1 == str3) ...
Das ist kürzer un schneller.
-
ups, den hab ich mir nicht richtig angeschaut
(weil keine codetags)
peterthemasters ist auch in ordnung
-
also das buch was ich habe ist zum lernen eigentlich sehr gut da steht nur nichts von der stl und containern drin. mit strcmp klappt die sache eigentlich ganz gut, ist vieleicht nicht die beste und unaufwendigste lösung.
Aber hier erst mal danke an alle die mir helfen wollten.
-
auserdem stehen die string funktionen nicht in string sondern in cstring oder bei c in string.h. strings wurden schon beschrieben.
-
ok hattest doch rcht die header strin gibt es sorry da war ich wohl etwas voreilig
-
also in <cstring> stehen operationen, die auf C-Strings anwendbar sind, also auf char-Felder. in <string> ist eine Klasse definiert, die einen String repräsentiert. Das vereinfacht den Umgang ungemein.
Statt
strcpy(dest, source);
einfach
dest = source;
also so, wie man es erwartet. Ein Aneinanderhängen ist mit + bzw. += möglich, ...
-
hey danke
ich dachte c++ wäre immer noch so unflexibel mit strings wie c gut zu wissen
-
wer weigert sich denn die ganze zeit, neues anzunehmen?
-
@PeterTheMaster: ich
-
Die Antwort von linux ist in Ordnung.
Mit dem Vorschlag hat man die Möglichkeit, zunächst mit der if-Anweisung eine unendliche Zahl von Varianten abzuprüfen (und im Beispiel mit a zu kategorisieren). Im Anschluss werden die Varianten auf eine begrenzte Zahl von "case-Fällen" zurückgeführt.
Besser geht's ja wohl nicht.
Ich glaube aber, dass sieht für einige nur zu einfach aus. Ist eben das naheliegenste.
-
Naja, hat sein Programm unendliche Anzahl an Befehlen? Nein...
Von daher:if(...) { ... }
else if(...) { ... }
else { ... }
-
hey was soll das denn wer schreibt denn da unter meinem namen
der letzte post vor diesem hier stammt nicht von mir.
-
"Naja, hat sein Programm unendliche Anzahl an Befehlen? Nein..."
In deinen else if Anweisungen aber schon. Und dann müsstest du die ganzen Befehle die unter case stehen evtl. 50 mal wiederholen.
Mit der switch-Anweisung jedoch nur 3 mal. Unter else if steht ja immer nur a=1 oder a=2 usw.
-
ich habs jetz erst mal so gelöst das ich unter else if direkt die anweisung geschrieben habe da diese in meinem programm nie länger als 3 zeilen sind.
-
In deinen else if Anweisungen aber schon. Und dann müsstest du die ganzen Befehle die unter case stehen evtl. 50 mal wiederholen.
Mit der switch-Anweisung jedoch nur 3 mal. Unter else if steht ja immer nur a=1 oder a=2 usw.Versehe ich nicht. Erklär das bitte nochmal für Dumme (mich).