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

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

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2015, 19:30   #1
Julia22
 
Регистрация: 19.08.2015
Сообщений: 7
По умолчанию Чтение из файла STL

Подскажите как записать в поля из файла информацию в поля
Я пыталась, работает, но не читает(
Код:
void Map::ReadFromFile()
{
string s,key;
fstream F;
int k, value, counter;
map <string, Pr> ob; 
map <string, Pr> :: iterator it;
Pr *pr;
 
F.open("D:\\sportman.txt");
if(F)
{
while (!F.eof())
{
k=0;
counter=0;
pr = new Pr();
std::getline(F,s); //само переходит на след. строку
int n_first = 0;
int n_last = s.length();
int n_del = 0; //позиция пробела
string buf;
if(counter==0){
n_del = s.find('%', n_first); 
buf = s.substr(n_first, n_del-n_first);
value = atoi (buf.c_str());
pr->set_mesto(value);}
while(n_del != string :: npos) // npos - равно -1 когда доходит до конца строки
{
n_del = s.find('%', n_first); 
buf = s.substr(n_first, n_del-n_first); // в buf записывается n_del-n_first символов, начиная с n_first 
 
switch(k)
{
case 0:pr->set_fam(buf); break;
case 1: pr->set_vid(buf);
case 3: value = atoi (buf.c_str());//из строки в инт
pr->set_god(value); break;
case 4: pr->set_mesto(value);break;
 
}
n_first = n_del+1; //+1 чтобы не считать пробел
k++;
}
key= pr->get_fam();
ob.insert (pair<string,Pr>(key,*pr));
counter++;
}
F.close();
}
 
}
Вложения
Тип файла: rar ee.rar (4.1 Кб, 25 просмотров)

Последний раз редактировалось Julia22; 12.12.2015 в 23:17.
Julia22 вне форума Ответить с цитированием
Старый 12.12.2015, 19:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
как записать в поля из файла информацию в поля
Файл текстовый? Как выглядит?
Цитата:
не читает(
Ошибки бьет? Или что?
Отладку, я так понимаю, не проводила?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2015, 20:01   #3
Julia22
 
Регистрация: 19.08.2015
Сообщений: 7
По умолчанию

Да, текстовый.
Прога запускается, но ничего не читает
вот из файла:
Ivanov Beg 2007 2 Ivan
Petrov Gimnastika 2010 3 Petr
Sliva Biatlon 2004 10 Daria
Petrov Gimnastika 1998 5 Petr
Julia22 вне форума Ответить с цитированием
Старый 12.12.2015, 20:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ясно... Хм... Давай попробуем так:
Код:
void Map::ReadFromFile()
{
ifstream F("D:\\sportman.txt");
if(!F) return;
std::string familia,sport,imya; int year,mon;
 while (!F.eof()){
   f>>familia>>sport>>year>>mon>>imya;
   //Тут что-то делаешь с этими переменными 
 }
 F.close();
}
Годится такое упрощение?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2015, 22:02   #5
Julia22
 
Регистрация: 19.08.2015
Сообщений: 7
По умолчанию

никак(
вот мэйн, может там что не так
Код:
#include "map.h"
#include <fstream>

void main(void) {
	setlocale(LC_ALL, "Russian");
	cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
	cout << "+++                                                                 +++" << endl;
	cout << "+++                          Здравствуйте!                          +++" << endl;
	cout << "+++             Вас приветствует автоматизация                      +++" << endl;
	cout << "+++             информации о проведении спортивных соревнований     +++" << endl;
	cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
	cout << endl;
	Map ob;
	Pr pr;
    ob.ReadFromFile();
	char act;
	do {
		cout << "Что нужно сделать?" << endl << endl
			<< "1 - Показать список спорсменов" << endl
			<< "2 - Добавить спорсмена" << endl
			<< "3 - Вывести список спорсменов, имеющих заданное место" << endl
			<< "4 - Вывести список спорсменов, который принимал участие в соревнований с заданным годом проведения" << endl
			<< "5 - Вывести количество спортсменов с заданным именем" << endl
			<< "6 - Вывести количество список спортсменов, которые заняли места из интервала " << endl
			//<< "9 - Удалить заданных спортсменов" << endl
			//<< "0 - Вывести список , отсортированный по фамилии" << endl
			<< "Нажмите клавишу q, чтобы выйти" << endl;
		cout << "==============================================================================" << endl;
		cin >> act;
		
		ob.show_mas();
		switch (act) {
		case '1':
			ob.show_mas();
			break;
		case '2':
			ob.add_Pr(pr);
			break;
		case '3':
			ob.show_mesto();
			break;
		case '4':
			ob.show_mas();
			ob.show_fam();
			break;
		case '5':
			ob.show_mas();
			ob.show_name();
			break;
		case '6':
			ob.show_mas();
			ob.show_mesto_interval();
			break;
		/*case '7':
			ob.show_mas();
			ob.show_date();
			break;*/
		//case '8':
		//	//ob.show_sect();
		//	break;
		/*case '9':
			ob.delete_Pr();
			break;*/
			case 'q':
			break;
		default:
			cout << "Ошибка! Попробуйте ещё раз." << endl << endl;
			system("cls");
		}
	} while (act != 'q');
}
Julia22 вне форума Ответить с цитированием
Старый 12.12.2015, 22:46   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Тебе наверное лучше заархивировать эти два файла и приаттачить к теме.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2015, 23:36   #7
Julia22
 
Регистрация: 19.08.2015
Сообщений: 7
По умолчанию

всё, я сделала
Julia22 вне форума Ответить с цитированием
Старый 12.12.2015, 23:59   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Молодец... )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.12.2015, 00:39   #9
Julia22
 
Регистрация: 19.08.2015
Сообщений: 7
По умолчанию

Ну дык что не так?
Julia22 вне форума Ответить с цитированием
Старый 13.12.2015, 14:23   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Ну дык что не так?
Ты ж сказала, что все сделала?
Или что ты имела ввиду? Прикрепленного к теме архива я не вижу, потому не могу сказать что не так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла Стремящийся Общие вопросы по Java, Java SE, Kotlin 2 10.06.2012 10:56
Чтение из файла Ghost of Night C# (си шарп) 3 26.03.2012 13:10
Чтение с файла с++ Voxa7 Помощь студентам 2 27.04.2011 20:47
STL в QT конфликтует с STL в Borland nvrrus C++ Builder 0 31.03.2011 10:51
Чтение из файла DimOn4Ik PHP 1 02.01.2010 22:41