C++ Net - Ein If auf ein String immer false

pibr

Grünschnabel
Hallo zusammen,

irgendwie habe ich gerade das Gefühl, dass ich voll spinne.
Das folgende liefert immer false zurück. Und mir ist absolut unklar warum das so ist.
Vielleicht kann mir das mal einer erklären oder die richtige Lösung nennen:

Code:
String * s1 = "ABC";
 
if (s1->Substring(0,1) == "A")
{
MessageBox::Show("OK")
}
 

broetchen

Erfahrenes Mitglied
Ein *? Ein ->? Ein ::?

Aaaaaaah, pfui, wäh, igitt....C++

Irgendwie habe ich das Gefühl, du bist im falschen Forum gelandet!?

Aber die Antwort is recht einfach (wenn es gleich funktioniert, wie in C#). Ein String ist ein Referenztyp und somit gehen Abfragen, die mit == laufen auf die Referenz und nicht auf den Inhalt. Sprich, du vergleichst die Referenz von s1-Substring(0,1) mit der von "A" und das wird (sofern deine Maschine nicht spinnt) immer fehlschlagen.
Um den Inhalt von Strings zu vergleichen, bedien dich der Equals-Methode.

Versuch's mal so:
Code:
String * s1 = "ABC";
 
if (s1->Substring(0,1)->Equals("A"))
{
MessageBox::Show("OK")
}

mfg broetchen
 

pibr

Grünschnabel
du magst wohl kein c++ *ROTFL*
Egal, wie war da snoch mit dem Wald und den Bäumen. Oh Mann, ja ist klar. Vergessen wir die Frage einfach.
 

Neue Beiträge