Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задать значение для строки в структуре, Как сделать правильно? 
V
    Опции темы
icewind
Дата 2.6.2009, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 20



Здравствуйте. У меня есть контейнер 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);

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

Это сообщение отредактировал(а) icewind - 2.6.2009, 23:55


--------------------
user posted image
PM MAIL Skype   Вверх
andrew_121
Дата 3.6.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



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


А строку:
Код

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

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

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




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
icewind
Дата 3.6.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 20



Спасибо большое! Исправил как вы сказали и все заработало.  smile 


--------------------
user posted image
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.