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.


Log in to reply