Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2015, 19:10   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Занести данные в структуру из файла

Добрый день. Есть структура с данными о клиенте фирмы. В файле содержится информация про клиента: Имя,Фамилия,номер телефона...Как сделать так ,чтобы фамилия записывалась в поле Surname структуры,телефон в phone и т.д.
В файле все "ограждено" точкой с запятой:
Иван;Петрович;Сидоров;
Например,таким способом оно все подряд занесет,а мне нужно как-то указать,чтобы считывались данные до точки с запятой,но не знаю как это сделать
Код:
for (int i = 0; i < N;i++ )
             {          
                    ifs>>List[i].name;          
             }
Вероника99 вне форума Ответить с цитированием
Старый 29.11.2015, 19:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В файле все "ограждено" точкой с запятой:
А ты считывай строку, и разворачивай ее по разделителю:
Код:
string s;
getline(ifs,s);
stringstream ss(s);
getline(ss,List[i].name, ';')
getline(ss,List[i].surname, ';')
getline(ss,List[i].father, ';')
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.11.2015, 19:38   #3
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Сделала так и выдает такие ошибки
Код:
string s;
getline(ifs,s);
 for (int i = 0; i < N;i++ )
{			
				getline(s,List[i].name, ';');

 }
getline(std::basic_istream<_Elem,_T raits> &&,std::basic_string<_Elem,_Traits, _Alloc> &): требует аргументов: 2, имеется: 3
не удалось вывести аргумент шаблон для "std::basic_istream<_Elem,_Trai ts> &&" из "std::string"
Вероника99 вне форума Ответить с цитированием
Старый 29.11.2015, 19:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

#include <sstream> прописала?
List[i].name кстати какого типа?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.11.2015, 19:57   #5
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Не прописала,забыла,теперь работает. Спасибо.
List[i].date типа string

А если не все данные типа string,там есть еще массивы типа int. Как можно было бы сделать,чтобы оно еще в int считывало?

Последний раз редактировалось Stilet; 30.11.2015 в 09:43.
Вероника99 вне форума Ответить с цитированием
Старый 30.11.2015, 09:45   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А так же. Считывать в некую string, а потом ее конвертировать: http://programmersforum.ru/showthread.php?t=283083
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2015, 23:15   #7
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Спасибо,разобралась)
И возник еще один вопрос:как сделать так,чтобы можно было обращаться к этому файлу и редактировать определенные данные? Например нужно с программы поменять номер телефона клиента.
Вероника99 вне форума Ответить с цитированием
Старый 01.12.2015, 10:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

М.м.м... Это сложнее...
ИМХО придется считывать все данные файла в массив записей, их там в памяти редактировать, а потом перезаписывать файл. Текстовые файлы прямо так физически править сложно, поэтому рекомендуется их в памяти править целиком.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2015, 19:32   #9
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Да,так и делаю,но когда я ввожу строки в консоли кириллицей и заношу их в файл,то в файле появляются левые символы:" : ’*а*б " -это вывелось вместо имени,когда на английском,то все ок,что делать в этой ситуации?
Вероника99 вне форума Ответить с цитированием
Старый 01.12.2015, 20:06   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я так не скажу что это не видя кода... Может юникод, может просто мусор...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си как организовать структуру, данные взять из файла или сгенерировать Vlt Помощь студентам 7 06.06.2012 22:55
Занести данные из 1 текстбокса в другой Rust_12 Microsoft Office Excel 4 19.03.2012 02:39
Программно занести данные в реестр Nexus2116 Общие вопросы Delphi 1 05.11.2010 21:56
занести данные в таблицу Танюха Ю Помощь студентам 4 14.10.2009 17:48
Как занести данные в DBGrid bbk_serg БД в Delphi 4 25.02.2009 14:44