Teilvergleich von strings
-
ich habe einen String temp='RECRDY8', der immer 7 Zeichen lang ist. Die ersten 6 Zeichen möchte ich nun vergleichen mit 'RECRDY'. Falls die ersten 6 Zeichen übereinstimmen, soll er true zurückgeben, falls nicht false.
Das 7.Zeichen, also hier die '8' ist variabel. Also kann es auch mal zu einem 'RECRDY4' oder was auch immer kommen.
Wie ist nun der effektivste Weg, um die ersten 6 Zeichen zu vergleichen, und mir das 7.Zeichen in eine extra int-Variable zu übergeben?
Für den Vergleich würde es mir schon reichen, wenn mir jmd sagt, wie ich die ersten 6 Zeichen rauskopieren kann und in einen neuen String speichere. dann kann ich es ja mit strcmp() vergleichen...
-
#include <iostream> #include <string> bool CompareAndGetInt(std::string str, int &n) { n = atoi(str.substr(6, 1).c_str()); return strcmp(str.substr(0, 5).c_str(), "RECRDY") ? true : false; } int main() { char c[] = "RECRDY8"; int n = 0; bool b = CompareAndGetInt(c, n); printf("The integer is: %d\n", n); printf("The comparison evaluated as: %d\n", b); return 0; }
-
std::string::compare ist besser als das mit substr
-
Er hat strcmp() bereits in seiner Fragestellung angesprochen, deshalb hab ichs auch mit reingenommen.
Natürlich kann mans genausogut mit der compare() Methode der Stringklasse machen.
Letzenendes kommts ja auf das Gleiche drauf raus.