Die einfachste Methode zum vergleichen von string mit integer zu string mit hex
Ich habe zwei strings mit integer - (z.B. string strInt = "100") und eine mit der hex-Zahl (z.B. string strHex = "0x64").
Was ist der Schnellste/schöner/sicherer Weg, um zu vergleichen, ob die Werte der strInt und strHex gleich sind(numerisch)?
Auszuschließen müssen sprintf, um Pufferüberlauf zu verhindern
Auch nicht verwenden snprintf - mein compiler unterstützt c++ 11
Danke Euch allen im Voraus
- die kritische info hier ist die Anzahl der Ziffern, und Sie haben es gelassen.
- Natürlich muss dies in C++ 🙂
- Das hex-format ist 0xyyyyy - also 5-stellig
- Ist das nicht die hex-Zahl eine Ganzzahl zu? Jede chance, die Sie gemeint "dezimal" statt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
strtol
sowohl konvertieren zu integer und dann vergleichen. Sie könnenstrHex.c_str()
konvertieren von c++ - string an die c-Stil-string benötigtstrtol
.Beispiel:
Sehe ich nicht, wie die
sprintf()
odersnprintf()
Funktion wäre dafür gebraucht.strtol()
werden Massiv downvoted bald 😛 Wenn Sie eine gute optimierende compiler, dies sollte kein Problem sein, und mit C++ - code wird in der Regel bevorzugt über die Verwendung von C, wenn man etwas zu schreiben in C++.strtol
. in C++11 ist das, was die streams intern verwenden. in C++03, die Sie stattdessen verwendet der fscanf-Familie mit Undefined Behavior in einigen Fällen, insbesondere für die Umwandlung von hex... also, in diesem Fall die Allgemeine Richtlinie der höheren Ebene der Funktionalität, verursacht die Auswahl deutlich schlechtere Lösung: mehr unsicher, mehr ineffizient, Ausführlicher. 🙂 nur mit höheren level-Lösung, wenn es spart Ihnen Arbeit.std::
Klassen. Ich nicht sehen, der Punkt, dass es in der Zeit, noch verstehe ich, warum meine Antwort ist besser als Jorge ist (das meine ich ernst!), praktisch bin ich selbst-Verteidigung.