| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Проблема с вектором |
| Автор: FTTA 11.2.2013, 15:00 | ||
Есть такой код:
Когда програма уже выполняется, выдаётся ошибка access violation на строчку №22. Но когда сделать так Spusok[0].value=atoi(t); все работает Подскажите пожалуйста в чем причина, или посоветуйте хорошую книжку по С++. |
| Автор: NoviceF 11.2.2013, 18:20 | ||||||
зачем изобретать велосипед, если есть std::pair http://cplusplus.com/reference/utility/pair/?kw=pair
неинициализированные переменные могут доставить ряд проблем, благо компиляторы об этом предупреждают.
http://cplusplus.com/reference/istream/istream/get/ A pointer to an array of characters where the string is stored as a c-string Указатель, который передаётся в эту функцию, должен указывать на уже созданный массив, а ты предаёшь указатель, который указывает неизвестно куда (смотри пример использования по ссылке выше). Плюс указываешь длину читаемых символов 20, несмотря на то, что предполагается, что ты читаешь имя, длина которого 10 символов (11й на терминальный нуль). Дальше не смотрел, но сначала это исправить бы. И вообще, если уж используешь STL, лучше использовать его возможности, а не Си функции. Как учебник могу рекомендовать Герберт Шилдт C++ базовый курс, издание 2010. |
| Автор: NoviceF 11.2.2013, 20:14 | ||
Сам контейнер может называться достаточно красноречиво, чтобы понять, что такое first и что такое second, но на истину не претендую, в промышленном масштабе пока ничего не делал ) Но в любом случае, автору есть над чем подумать.. взять хотя бы хидеры, имя класса, поле name типа char, а не string.. |
| Автор: borisbn 11.2.2013, 22:26 | ||||
FTTA, весь ввод данных можно уложить в эти строки
итого получается
|
| Автор: bsa 14.2.2013, 08:49 |
| borisbn, хидеры забыл приинклюдить. У ТС с его знаниями языка на уровне турбо с++ могут возникнуть проблемы. |
| Автор: borisbn 14.2.2013, 09:27 |
| bsa, подправил. и std:: добавил ) |