Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Задать значение для строки в структуре


Автор: icewind 2.6.2009, 23:53
Здравствуйте. У меня есть контейнер map со значениями. Подскажите, пожалуйста, как правильно присвоить значение из него строке, которая находится в структуре? Я пробовал делать так:
Код


typedef map<string, unsigned> StrMap;

struct resultStruct
{
        unsigned int count;
        string key;
};

//Здесь заполняется StringMap

int arrayUnique = StringMap.size();
resultStruct * result = (resultStruct*)malloc(sizeof(resultStruct) * arrayUnique);

int i = 0;           
for(StrMap::iterator it=StringMap.begin(); it != StringMap.end(); ++it)
{
    result[k_iter].key.assign(it->first);
    result[k_iter].count = it->second; 
}

Но даже в процессе написания кода я догадывался что так не выйдет. И точно  smile вывалилась Segmentation Fault, а GDB подтвердил сомнения насчет строки
Код

result[k_iter].key.assign(it->first);

Мне кажется, что я пытаюсь присвоить значение не существующей строке.  smile 
Попробовал
Код

result[k_iter].key(it->first);

Понятное дело, ничего не вышло... Подскажите как сделать правильно присвоение значения в данном случае?

Автор: andrew_121 3.6.2009, 00:07
В 12-ой строке, ты выделяешь память. Но malloc не вызывает конструкторы для resultStruct::key. Выделяй память при помощи new


А строку:
Код

result[k_iter].key.assign(it->first);

замени на:
Код

result[k_iter].key = it->first;


Автор: icewind 3.6.2009, 00:24
Спасибо большое! Исправил как вы сказали и все заработало.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)