strcmp, wieso mit Negator???
-
nein es ist mir nicht klar...
-
strcmp liefert 0 zurück, wenn die beiden Strings gleich sind. !0 ist 1, also true, !x für alle anderen x ist 0, also false. Da sollte eigentlich if (strcmp(...) == 0) stehen, aber irgendwer hielt es so wohl für für cleverer.
-
Genauer: Es gibt die "Abweichung" zurück. Also < 0, == 0 oder > 0. Jenachdem welcher Wert "größer" ist.
-
wie wäre denn einfach mit std::string? geht doch deutlich besser...
-
Vielen Dank Bashar...
@ basingstoke, wenn es damit besser geht, lege doch los...

-
Petrus86 schrieb:
Vielen Dank Bashar...
@ basingstoke, wenn es damit besser geht, lege doch los...

Viel besser: du fängst mal an Dokumentationen zu lesen, da du scheinbar noch nicht einmal in der Lage warst vor dem Stellen der Frage dir den "strcmp" Befehl durchzulesen.
Und wenn es nur um Gleichheit geht, und du umbedingt sehen willst wie es mit std::string aussieht:
std::string a = "123"; std::string b = "456"; if(a == b) // Vergleich oder ... if(a != b) // Ungleichheit... ...cu André
-
Hallo Andre,
ihre Verdächtigungen stimmen nicht! Ich wusste was strcmp zurück gibt, ich habe das einfach nicht gerafft...
std::string a = "123"; std::string b = "456"; if(a == b) // Vergleich oder ... if(a != b) // Ungleichheit... ...Der Code ist zwar leichter zu verstehen, aber dafür wesentlich länger....
-
Länger? Ich sehe da gleichviele Zeilen...
Je 1 Zeile Initialisierung und 1 Zeile Vergleich...
Und strcmp ist länger als ==.
-
Hm, komisch,
ist ja auch egal, vielen Dank jedenfalls für die Hilfe!
-
Petrus86 schrieb:
...
Wieso änderst du bei einen Quote die Tags?
[ cpp ] / [ / cpp ] ist jedem [ code ] / [ / code ] bei C/C++ vorzuziehen!
Petrus86 schrieb:
Der Code ist zwar leichter zu verstehen, aber dafür wesentlich länger....
Wie schon erwähnt deutlich da der Teil, der bei dir nicht beschrieben ist durch die Initialisierung abgebildet wurde... der Teil um den es geht ist ein "(a==b)" was sicher kürzer als deine C-Stringoperatoren ist.
cu André
-
Hallo,
ok wenn man nur die Zeile (a==b) betrachtet ist es wesentlich kürzer, ich habe dass gezählt, was man selber schreiben muss:
a)
std::string a = "123"; std::string b = "456"; if(a == b) // Vergleich oder ... if(a != b) // Ungleichheit...b)
if(!strcmp(a,b))Aber ist mir jetzt völlig egal, auch wenn if (a==b) und er Rest kürzer ist, darum sollte es doch nicht gehen...
-
Nee..., der Vergleich müsste so aussehen:
std::string a = "abc"; std::string b = "def"; if (a == b) // vs. char a[] = "abc"; char b[] = "def"; if (strcmp(a, b) == 0)Gruß
Don06
-
wie pingelig kann man denn sein ?
Ist doch völlig egal, wie man's macht, hauptsache man versteht's und es funktioniert...