Vergleich von const char an einen string
Ich habe ein Problem, vergleicht man ein const char zu einem string... Wenn ich Com_Printf ("%s", Wert);
Es gibt was ich will (0.3 c), aber wie kann ich konvertieren value in einen string und Vergleiche, die auf 0.3 c? Dies ist, was ich habe:
value = SearchInfostring(msg, "shortversion");
if (value != "0.3c")
{
Com_Printf (MSG_WARNING,
Com_Printf (MSG_WARNING,
"> WARNING: Value: Should be 0.3c, is: %s \n",
value);
//Run stuff
}
Zurückgibt:
WARNUNG: Wert: Wert Sollte 0,3 c, ist: 0.3 c
- Zeig mehr code. Wo ist der Wert deklariert?
- Ich gehe davon aus
value
iststd::string
wie du geschrieben hast. Sind Sie sicher, es gibt keine trailing/führenden Leerzeichen invalue
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der Wert vom Typ const char*, Ausdruck
ist der Vergleich zweier Zeiger (Adressen), keine strings. Vergleichen Sie string und ein string-literal, so können
strcmp
:Beachten Sie, dass am günstigsten gelegene string-Typ in C++ ist
std::string
.value
war der Typstd::string
den code, den Sie gepostet werden, funktioniert wie man es erwartet (wie chris geschrieben in seiner Antwort).Verwenden Sie ein
std::string
fürvalue
.Dann vergleichen Sie es normalerweise. Wenn Sie nicht verwenden Sie eine Zeichenfolge an alle aus welchem Grund auch immer (der Rückgabewert konvertiert werden kann), verwenden
strcmp
.Scheint es, dass
SearchInfoString
gibt einechar *
, basierend auf der Art, wie Sie es mitCom_Printf
. Daher können Sie nur verwendenstrcmp()
zu vergleichenvalue
zu"0.3c"
. Zum Beispiel: