Помогите разобратся с классов Cmap в Mfc

  • Автор темы Автор темы alex_m
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
A

alex_m

помогите найти ошибку
не могу заполнить объект класса CMap данными
хотя все должно работать и компилируется нормально
но при введении данных получается создается только одна запись
Код:
#include <afxwin.h>
#include <afxtempl.h>
#include <iostream>
using namespace std;


int main()
{
if(!AfxWinInit(GetModuleHandle(0), 0, GetCommandLine(), 0))
{
cout<<"MFC no initialized"<<endl;
return -1; 
}
//-----------------------------------------------------------------
int choise, n, count;
CMap<char*, char*, char*, char*> map;

char *pass = new char[10];
char *surname = new char[50];
cout<<"\nHow much records you want to add:";
cin>>n;
for(int i=0; i<n; i++)
{
cout<<"Enter surname: ";
cin>>surname;
cout<<"Enter passport date: ";
cin>>pass;
map.SetAt(surname, pass);
}

cout<<"\n-= BASE =-"<<endl;

POSITION pos = map.GetStartPosition();
while(pos)
{						
map.GetNextAssoc(pos, surname, pass);
cout<<surname <<" <=> "<< pass <<endl;
}

delete []pass;
delete []surname;

return 0;
}
 
У тебя в мапе хранится указатель на один и тот же буфер, а значение в нем вводится каждый раз новое. В результате в конце остается только последнее значение.

Да, не уверен как работает CMap<char*> - вполне возможно что хешируется не строка, а указатель. Имеет смысл использовать CMapStringToString или CMapStringToPtr
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab