Форум программистов, компьютерный форум CyberForum.ru

Работа с текстовым файлом - C++

Восстановить пароль Регистрация
 
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
18.08.2012, 01:08     Работа с текстовым файлом #1
Вот часть кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void ReadFile(ifstream &fin, int Kol_Ar)
{
//чтение данных из файла и вывод на консоль
CCust *ReadF = new CCust[Kol_Ar];
for(int i = 0; i < Kol_Ar; i++)
{
fin >> ReadF[i].CustomerID >> ReadF[i].Customer >>
ReadF[i].Chief >> ReadF[i].AddressCust >> ReadF[i].Room;
 
cout << "\nИНН арендатора: " << ReadF[i].CustomerID;
cout << "\nНазвание арендатора: " << ReadF[i].Customer;
cout << "\nФамилия руководителя: " << ReadF[i].Chief;
cout << "\nАдрес арендатора: " << ReadF[i].AddressCust;
cout << "\nКабинет арендатора: " << ReadF[i].Room << "\n";
}
 
delete[] ReadF;
ReadF = 0;
}
все работает, только вот ReadF[i].AddressCust считывает не всю строку а часть, до первого пробела, я нашел что getline игнорирует пробел, но как его использовать в этой части не могу понять... Заранее благодарю за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.08.2012, 02:19     Работа с текстовым файлом #2
Если ReadF[i].AddressCust - string, то:
C++
1
getline(fin, ReadF[i].AddressCust);
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
18.08.2012, 12:18  [ТС]     Работа с текстовым файлом #3
Я знаю про getline, у меня вопрос к запихнуть эту функцию в код:

C++
1
2
fin >> ReadF[i].CustomerID >> ReadF[i].Customer >>
ReadF[i].Chief >> ReadF[i].AddressCust >> ReadF[i].Room;
Тут у меня и строки и числа... тупо вставить не получается...

Добавлено через 19 минут
если даже просто использовать
C++
1
getline(fin, ReadF[i].AddressCust);
выдает ошибки:

error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для "std::basic_istream<_Elem,_Traits> &" из "std::ifstream"
см. объявление 'std::getline'
error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для "std::basic_string<_Elem,_Traits,_Alloc> &" из "char *"
см. объявление 'std::getline'
error C2780: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem): требует аргументов: 3, имеется: 2
см. объявление 'std::getline'
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.08.2012, 18:09     Работа с текстовым файлом #4
Что из себя представляет ReadF[i].AddressCust? fin как объявлен? Какая IDE? Третий параметр в getline по умолчанию задан ('\n'). Попробуйте так: getline(fin, ReadF[i].AddressCust, '\n'); Как в файл записаны данные? Перевод строки там присутствует? Или символ окончания строки ('\0') ? Тогда можно так: getline(fin, ReadF[i].AddressCust, '\0'). И вставить нужно именно в то место, где :... >> ReadF[i].AddressCust >>... Остальные данные через >> нормально читаются? А лучше весь код посмотреть.

Добавлено через 22 минуты
Если ReadF[i].AddressCust это не string, а char[N], то можно так: fin.getline(ReadF[i].AddressCust, N);
Yandex
Объявления
18.08.2012, 18:09     Работа с текстовым файлом
Ответ Создать тему
Опции темы

Текущее время: 11:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru