map string finden



  • wchar_t tmp[1024];
        wcscat(tmp,Token->Tokens[0]->Data);
        iter2=define.find(tmp);
        if(iter2 == define.end()){
            cout<< "nicht gefunden"<<endl;
        } else {
            cout << " gefunden" <<endl;
        }
    

    So das Problem ist das er in tmp zwar das richtige gespeichert hat, aber es wird immer nicht gefunden ausgegeben.

    MfG



  • Was speicherst Du in der Map??
    const wchar_t* od. char* als key??

    pointer zu vergleichen ist keine gute idee, wenns auf den inhalt draufankommt.

    Benutze doch std::wstring / std::string als key.



  • wir speichern 2 const wchar_t * in der map.
    Token->Tokens[0]->Data : Das gibt allerdings einen wchar_t* zurück, deswegen haben wir auch die map mit wchar_t benutzt.
    Bei wstring müssten wir dann wieder alles hin und her casten/konvertieren.
    Darum wollten wir bei wchar_t bleiben. Gibts denn irgendeine andere Möglichkeit
    die find Funktion anzuwenden?



  • Dein Problem ist, dass der Key in der Map eine Adresse ist. Nun wird die Variable tmp selten die gleiche Adresse haben wie irgendwas, was Du zuvor in der Map gespeichert hast. Deshalb findest Du nichts.

    1. mögliche Lösung: wstring, denn ein Vergleich zweier wstrings vergleicht automatisch den Inhalt.

    2. mögliche Lösung: Du gibst der Map eine Vergleichsfunktion mit, die den Inhalt zweier wchar_t-Zeiger vergleicht.


Anmelden zum Antworten