PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : prob mit == op. in c++


beta3
2003-09-22, 19:21:56
hi
da ich jetzt wahrscheinlich von c# auf c++ umsteige, hab ich gleich zum testen was in c++ geschrieben


private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
if (label1->Text == label2->Text)
{
MessageBox::Show("richtig");
}
else
{
MessageBox::Show("falsch");
}
}

private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)
{
label1 ->Text = "0";
label2 ->Text = "0";
textBox1 ->Clear();
}

das problemo

compilen geht ohne jegliche schwierigkeit
aber beim klick auf button1, wird falsch (unter else) angezeigt
hab ich den operator falsch eingesetzt, wenn ja, wie gehoert er richtig?

danke
peter


p.s.:
koennte sein, dass es c++.net ist, weiss es aber ned genau

edit:
smileys deaktiviert

Gast
2003-09-23, 00:42:35
Du vergleichst hier nur die adressen der zeiger und nicht die eigentliche zeichenkette und die adressen sind hier selbstverständlich unterschiedlich.

zeckensack
2003-09-23, 00:45:25
std::string ist eine String-Klasse, die dem Operator == ein etwas leichter verständliches Verhalten beschert ;)

Ansonsten solltest du erstmal schreiben, welchen Typ "Text" überhaupt hat.
Wenn char* oder char[], dann mußt du strcmp benutzen.

Fox
2003-09-27, 18:23:48
hab mit c++ noch nix gemacht, aber in java würde ich das mit equal vergleichen. ansonsten vergleicht man nur die speicheradressen.

Tom Servo
2003-09-27, 19:13:43
Einen extra Operator für String-Gleichheit gibts in C++ nicht. Für null-terminierte Strings benutzt man eine Compare-Funktion und für die string-Klasse einen überladenen == Operator. Java kann glaube ich kein Operator-Overloading.

Wichtig wäre zu wissen, welche Datentypen dort benutzt werden.

Wäre es z.b. string*, dann müsste man einfach nur schreiben:

if (*label1->Text == *label2->Text)

Man muss also erstmal in der Doku nachsehen oder es sich von der IDE anzeigen lassen.

Aber er wird das sicher schon selber rausgefunden haben. Hatte nur mal kurz gegoogelt und da was bei MSDN von String* gelesen bei C++/.NET. Ist allerdings eine mir unbekannte Syntax, weil es Properties in ISO-C++ nicht gibt, hat MS da wohl was hinzugefügt für C++/.NET.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemcodedomcodesnippettypememberclasstexttopic.asp