Strings vergleichen
-
Hash-Container
-
ja gut Hash container kenne ich noch nicht, davon stand in meinem anfänger buch nichs drin. welches der lösungen wäre denn eurer meinung nach das unkomplizirteste?
oder fällt euch noch was ein?
-
map<string, Functor>
-
die vom Peter
-
map<string, Functor>
-
sorry das ich da auch nachfragen muss aber map(string,Functor)kenne ich leider auch noch nicht. ich arbeite erst ca ein halbes jahr objektorientiert mit c++ von da her kenne ich ein paar sachen noch nicht.
-
ok, lassen wir den functor weg, wenn du noch neu bist. aber so solltest du das kapieren. minimaler aufwand, kaum eine chance was falsch zu machen, sehr leicht erweiterbar.
#pragma warning(disable:4786); #include<map> #include<string> #include<iostream> using namespace std; void hi(){cout<<"hi"<<endl;} void ho(){cout<<"ho"<<endl;} int main(){ typedef void Func(); typedef map<string,Func*> MSF; MSF m; m["hi"]=hi; m["ho"]=ho; m["hi"](); m["ho"](); return 0; }
-
ho?
bist du PeterTheTroll
-
nochmal um klar zu machen auf welchem niveau ich gerade arbeite. in mienem buch wird kein wort über den bereich von stl verloren ich warte gerade auf ein nes buch. von daher vertehe ich kaum was aus dem code auch wenn ereigentlich noch so einfach ist.
sorry
-
while(strcmp(erste_zeichenkette,zweite_zeichenkette)!=0 ... usw usw a=1;
oder
if(strcmp(erste,zweite)!=0 ...
usw usw
a=2;....
switch(a)
{
case 1:
...
case 2:
...
}So kommst du auch mit einfachsten Mitteln zum Ziel. Und das Ganze bleibt verständlich.
-
jo wirklich einfache lösung die sogar ich verstehe.
-
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