Kompilerfehler bei String Vergleich HILFE!
-
Hallo
Ich habe 2 strings die meiner Funktion übergeben werden. Es geht darum 2 strings zu vergleichen, mit der Schwierigkeit den String nur bis zu einem bestimmten Token zu vergleichen... Hier die Funktionen:
bool Controller::stringCompare (string sPath, string sSource) { int iResult =0; char* tPath; char* tSource; char* cPath = sPath.c_str(); // <------------------ char* cSource = sSource.c_str(); // <------------------ tPath = token (cPath); tSource = token (cSource); iResult = strcmp (tPath, tSource); }char* Controller::token(char* string) { char* Vergl = NULL; char Seperator [] = "_"; Vergl = strtok (string, Seperator); return Vergl; }Und er sagt mir jetz an diesen Stellen (wo der Pfeil ist), dass
Initialisierung: const char* kann nicht in char* konvertiert werden. Durch die Konvertierung gehen Qualifizierer verloren.
Ne Idee?
P.S. ich habe genbau das selbe schon unter einem anderen Beitrag (String in char*) gepostet. Sorry, aber ich denke ein neuer Beitrag ist besser, weil es nicht mehr wirklich was mit dem ursprünglichen Titel zu tun hat.
-
Du müsstest const char* nehmen (denn das gibt c_str () zurück). Besser wäre aber wohl Boost.Tokenizer, der ist C++ und benutzt std::string.
-
strtok kann nicht mit const char*, der kann nur mit char*.
Ätzend. Gibt es noch ne andere Möglichkeit außer die Boost Sachen zu verwenden?
-
Du kannst den Tokenizer Krams auch mit der find-Methode machen. const_cast ist nicht zu empfehlen, strtok wird schon wissen, warum es einen char* haben will.