Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » map mit string als key

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.02.2008, 18:13 Uhr
~caRlOs
Gast


Hallo, ich versuche gerade verzweifelt eine map zu erstellen welche als key einen string hat, leider gelingt mir das irgendwie nicht so recht. kann nur eine map erstellen die ein char* als key hat.

C++:
CMap<char*, char*, unsigned int, unsigned int> mapTextures;

mit

C++:
mapTextures.SetAt( "testeintrag", nTextureID );

setze ich ein neues item, wenn ich dann ein anderes hinzufüge welches auch mit nem "t" beginnt dann überschreibt die map den anderen eintrag. wie kann ich also den ganzen string als key verwenden ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.04.2008, 11:54 Uhr
~jencas
Gast


Nimm std::string oder CString statt char *
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.04.2008, 12:01 Uhr
~jencas
Gast


Nachtrag:

...oder gleich std::map
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.04.2008, 12:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

entweder benutz einfacherweise std::map mit std::string als key, falls du jedoch dinge wie serialisierung,usw der MFC nutzen willst, wär evtl die CMapStringToOb-Klasse evtl das richtige, das nimmt ein CString als Key und CObjects als Inhalt.

Auch wenn wohl für deine texturen die std::map ausreichen sollte und vor allem einfacher handzuhaben sein wird.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.04.2008, 16:04 Uhr
~caRlOs
Gast


ja danke, die std::map würde auch völlig reichen, habs bisher mit der CStringToObj-map gelöst, wollte auch auf die mfc verzichten (keine serialisierung notwendig).
bekomme es aber irgendwie mit der std::map nicht hin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.04.2008, 17:38 Uhr
mmc20
puss in boots


naja, ist eigentlich nicht soooo das problem

C++:
typedef std::map<std::string, unsigned int> STR2UINTMAP;
...
// deine member
    STR2UINTMAP myMap;

// einfügen
    myMap.insert( STR2UINTMAP::value_type(szKey, nUintData) );

// lookup
unsigned int GetData(const char *szName)
{
    unsigned int nData = 0;
    STR2UINTMAP::iterator iter;
    iter = myMap.find( szKey );
    if ( iter != myMap.end() ) {
        nData = (*iter).second;
    }
    return nData;
}

// alles löschen
    myMap.erase( myMap.begin(), myMap.end() );

// alle items durchgehen
    unsigned int nValue;
    STR2UINTMAP::iterator iter;
    for( iter = myMap.begin(); iter != myMap.end(); iter++ ) {
        nValue = (*iter).second;
        // hier weiter verarbeiten
    }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.04.2008, 10:00 Uhr
~jencas
Gast



Zitat von mmc20:


C++:
// alles löschen
    myMap.clear();


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.04.2008, 15:49 Uhr
xXx
Devil



C++:
const unsigned int get_data(const char* ptr_key)
{
    const STR2UINTMAP::const_iterator it(myMap.find(ptr_key));
    return it != myMap.end() ? it->second : 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: