не получается загрузить из файла в вектор
после загрузки при просмотре вектора, в векторе набор цифр
вот мой код:
Код:
#include <iostream>
#include <iterator>
#include <conio.h>
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#include <vector>
#include <numeric>
using namespace std;
struct Perech
{int nomer;
string outpunkt;
string inpunkt;
int h,min;
int cost;
int mest;
};
class vokzal
{
private:
std::vector<Perech> v;
Perech *px;
int n;
public:
vokzal(){n=0;px=NULL;}
~vokzal(){n=0;if(px!=NULL)delete[]px;}
void newBD();
void output();
void outputFile();
void inputfile();
};
void vokzal::outputFile() //сохранение БД в файл
{std::ofstream fout;
char file[20]; //переменная для названия файла
int i; //рабочая переменная для подсчёта
if (v.size() == 0){cout<<"Massiv pust\n";getch();return;}
cout<<"Vvedite fail dlya sohraneniya: ";cin>>file;
fout.open(file,ios::out|ios::trunc);
try{
if(fout.fail()){cout<<file<<" Ne sozdan\n";getch();n=0;px=NULL;return;}
//запись БД в файл
for( size_t i=0;i< v.size();i++)
{fout.setf(ios::left);
fout<<setw(6)<<v[i].nomer<<setw(12)<<v[i].outpunkt<<setw(11)<<v[i].inpunkt
<<setw(3)<<v[i].h<<setw(4)<<v[i].min<<setw(17)<<v[i].mest<<setw(8)<<v[i].cost<<endl;
}
cout<<"Baza dannuih sohranena\n";getch();
}
catch(...)
{
cout<<"Error";
getch();
}
}
void vokzal::newBD()
{
int i;
clrscr();
cout<<"Kolichestvo zapisey=";cin>>n;
if(px!=NULL)delete[] px;
px=new Perech[n];
try{
if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
for(i=0;i<n;i++)
{cout<<"Nomer avtobusa:";cin>>px[i].nomer;
cout<<"Punkt otpravleniya: ";cin>>px[i].outpunkt;
cout<<"Punkt naznacheniya: ";cin>>px[i].inpunkt;
cout<<"Vremya otpravleniya: ";cin>>px[i].h>>px[i].min;
cout<<"Stoimost bileta: ";cin>>px[i].cost;
cout<<"Kolichestvo mest: ";cin>>px[i].mest;
cout<<endl;
v.push_back(px[i]);
}
cout<<"Baza dannuih sozdana"<<endl;getch();
}
catch(...)
{
cout<<"Error";
getch();
}
}
void vokzal::output(){
if (v.size()==0){cout<<" "<<"V baze dannuih net zapisey\n";getch();return;}
clrscr();
cout.setf(ios::left);
cout<<endl<<"Baza dannuih 'Avtovokzal'\n"<<endl;
cout<<"N"<<" "<<setw(6)<<"Nomer"<<setw(12)<<"Otpravlenie"<<setw(11)<<"Pribuitie"
<<setw(7)<<"Vremya"<<setw(17)<<"kolichestvo mest"<<setw(8)<<"Stoimost"<<endl;
for (size_t i = 0; i < v.size(); i++){
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<v[i-1].nomer<<setw(12)<<v[i-1].outpunkt<<setw(11)<<v[i-1].inpunkt
<<setw(1)<<v[i-1].h<<":"<<setw(3)<<v[i-1].min<<setw(17)<<v[i-1].mest<<setw(8)<<v[i-1].cost<<endl;
i--; }
}
getch();
}
void vokzal::inputfile() //ввод БД из файла
{
int i; //рабочая переменная для подсчёта
Perech t; //рабочая переменная для подсчёта записей в файле
char file[10]; //переменная для названия файла
if(px!=NULL){delete[]px;n=0;px=NULL;} //очистка рабочей области(массива)
cout<<"Imya vhodnogo faila: ";cin>>file;
ifstream fin;
fin.open(file,ios::in|ios::out);
if(!fin.eof())
do{fin>>t.nomer>>t.outpunkt>>t.inpunkt>>t.h>>t.min>>t.mest>>t.cost;
n++;
} while(fin.good()); //пока файл не закончился
n--;
px=new Perech[n]; //выделение динамической памти
//ввод массива задолжников из файла
for(i=0;i<n;i++)
{fin>>px[i].nomer>>px[i].outpunkt>>px[i].inpunkt>>px[i].h>>px[i].min>>px[i].mest>>px[i].cost;
v.push_back(px[i]);}
fin.close();
}
int main(){
vokzal a;
char g;
do{
clrscr();
cout<<" "<<"Meny kassy avtovokzal\n";
cout<<" "<<"1 - New raspisanie avtobusov\n";
cout<<" "<<"2 - Save raspisanie v fail\n";
cout<<" "<<"3 - load raspisanie iz faila\n";
cout<<" "<<"4 - Prosmotr raspisaniy\n";
cout<<" "<<"E - Exit \n";
cout<<" "<<"Viberete punkt menu\n";
cin>>g;
switch(g){
case '1':a.newBD();break;
case '2':a.outputFile();break;
case '3':a.inputfile();break;
case '4':a.output();break;
}
}while(g!='E');
return 0;
}