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

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

alex_m

#1
помогите найти ошибку
не могу заполнить объект класса 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;
}
 

grigsoft

Well-known member
15.11.2005
735
0
#2
У тебя в мапе хранится указатель на один и тот же буфер, а значение в нем вводится каждый раз новое. В результате в конце остается только последнее значение.

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