• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите разобратся с классов 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;
}
 
G

grigsoft

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!