using std::map;
map <char*, char*> aMap;
Прежде всего, эта карта будет сравнивать не строки (внутри поиска), а адреса. Поэтому в принципе вы ничего не найдете с помощью std :: map :: search, набрав строковые литералы.
void search(const char* key) {
const int LEN = strlen(key);
char* keync = new char[LEN];
for (int i= 0; i < LEN; i++) {
keync[i] = key[i];
}
на данный момент у вас есть неопределенная строка, но это не имеет значения в вашем коде
char* value = aMap.find(keync)->second;
здесь вы выполняете поиск, сравнивая значения (адреса) указателей, поэтому возвращаемый итератор карты недопустим (он равен aMap.end ()), поэтому либо имеет нулевой, либо нераспределенный указатель как second
member
printf("%s", value);
delete[] keync;
}
int _tmain(int argc, _TCHAR* argv[])
{
a["key0"] = "value0";
search("key0");
return 0;
}
Я надеюсь, это объясняет, почему вы должны использовать std :: string вместо char *