C++ map::find char *vs. char []

Я использую карту C++ для реализации словаря в своей программе. Моя функция получает структуру в качестве аргумента и должна возвращать связанное значение на основе члена structure.name, который равен char named[32]. Следующий код демонстрирует мою проблему:

map <const char *, const char *> myMap;
myMap.insert(pair<const char *, const char *>("test", "myTest"));

char *p = "test";
char buf[5] = {'\0'};
strcpy(buf, "test");

cout << myMap.find(p)->second << endl; // WORKS
cout << myMap.find("test")->second << endl; // WORKS
cout << myMap.find(buf)->second << endl; // DOES NOT WORK

Я не уверен, почему третий случай не работает и что мне делать, чтобы он работал. Я отладил приведенный выше код, чтобы посмотреть переданные значения, и до сих пор не могу понять проблему.

Спасибо!

5
задан Neysor 5 April 2012 в 20:47
поделиться