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

Тема в разделе "MS Visual C++", создана пользователем alex_m, 5 май 2007.

Статус темы:
Закрыта.
  1. alex_m

    alex_m Гость

    помогите найти ошибку
    не могу заполнить объект класса CMap данными
    хотя все должно работать и компилируется нормально
    но при введении данных получается создается только одна запись
    Код (Text):
    #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;
    }
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    У тебя в мапе хранится указатель на один и тот же буфер, а значение в нем вводится каждый раз новое. В результате в конце остается только последнее значение.

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

Поделиться этой страницей