Я использую карту 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
Я не уверен, почему третий случай не работает и что мне делать, чтобы он работал. Я отладил приведенный выше код, чтобы посмотреть переданные значения, и до сих пор не могу понять проблему.
Спасибо!