Problem z odczytem pliku

0

Ma ktoś pomysł jak odczytać dane z pliku tekstowego? Bo już próbowałem na wiele sposobów i jestem dalej w kropce. Wywala mi błedy gdy chcę wczytać plik który utworzyłem wcześniej:/ Oto program:

main___

#include "klasa.h"
#include <conio.h>
#include <iostream>

int main() {

class baza *towary=NULL;
int n=0,i=0,m=0,o=0,c=1;

char znak;
char znak1;

towary[c].menu();
do 
{ 
cout<<"\nWybor: \n"<<endl;
znak=getch();
switch(znak) 
{ 
//---------------------------------------------------------------------------------------
case '1':
cout << "Liczba danych\n";
cin >> n;
towary=new baza [n];
cout << "Podaj dane: "<<endl<<endl;
cout << "--------------------------------"<<endl;
for (int i=0; i<n; i++)
{
towary[i].pobierz();
}
system("PAUSE");
system("cls");
towary[c].menu();
break;
//--------------------------------------------------------------------------------------- 
case '2':
for (int i=0; i<n; i++)
{
towary[i].zapisz();
}
system("PAUSE");
system("cls");
towary[c].menu();
break;
//--------------------------------------------------------------------------------------- 
case '3':
for (int i=0; i<n; i++)
{
towary[i].pobierz_z_pliku();
}
if (n==0)
{
towary[c].pobierz_z_pliku();
}
system("PAUSE");
system("cls");
towary[c].menu();
break;
//--------------------------------------------------------------------------------------- 
case '4':
cout << "Stan magazynu: "<<endl;
cout << "--------------------------------"<<endl;
for (int i=0; i<n; i++)
{
towary[i].wyswietl();
}
system("PAUSE");
system("cls");
towary[c].menu();
break; 
//--------------------------------------------------------------------------------------- 
case '5':
system("cls");
cout << "Ktory towar dodac do koszyka:\n"<<endl;
cout << "Stan magazynu: "<<endl;
cout << "--------------------------------"<<endl;
for (int i=0; i<n; i++)
{
towary[i].wyswietl();
}
cout<<"Wybierz:\n";
cin>>m;
system("cls");

cout<<"\n Menu \n";
cout<<"\n1. Dodaj kolejny towar ";
cout<<"\n2. Kup";
cout<<"\n3. Wyjdz";
do 
{ 
cout<<"\nWybor: \n"<<endl;
znak1=getch();
switch(znak1) 
{ 
case '1':
cout << "Stan magazynu: "<<endl;
cout << "--------------------------------"<<endl;
for (int i=0; i<n; i++)
{
towary[i].wyswietl();
}
cout<<"Wybierz:\n";
cin>>o;
break;

case '2':
if (o==0)
{
towary[m-1].wyswietl();
cout<<"*************"<<endl;
cout<<"*Do zaplaty:*"<<endl;
cout<<"*************"<<endl;
towary[m-1].Cena();
cout<<"*************"<<endl;
}
if (o>0)
{
towary[m-1].wyswietl();
towary[o-1].wyswietl();
cout<<"*************"<<endl;
cout<<"*Do zaplaty:*"<<endl;
cout<<"*************"<<endl;
towary[m-1].Cena();
towary[o-1].Cena();
cout<<"*************"<<endl;
}
break;

}
}
while (znak1!='3');
return 0;

break;
//---------------------------------------------------------------------------------------
}
}

while (znak!='6');


return 0;
}

_______klasa.cpp ___________

#include "klasa.h"
#include <fstream>

void baza::pobierz(){
cout << "nr_ID: ";
cin >> this->nr_ID;
cout << "Nazwa: ";
cin >> this->Nazwa;
cout << "Producent: ";
cin >> this->Producent;
cout << "Cena: ";
cin >> this->Cenka;
cout << "Ilosc: ";
cin >> this->Ilosc;
cout << "--------------------------------"<<endl;
};
void baza::wyswietl(){
cout << "nr_ID: " << this->nr_ID <<endl;
cout << "Nazwa: " << this->Nazwa <<endl;
cout << "Producent: " << this->Producent <<endl;
cout << "Cena: " << this->Cenka <<endl;
cout << "Ilosc: " << this->Ilosc <<endl;
cout << "--------------------------------"<<endl;
};

void baza::zapisz(){
ofstream strumien_plik; 
strumien_plik.open("dane.txt", ios::app);

strumien_plik<</*"nr_ID: "<<*/this->nr_ID <<endl; 
strumien_plik<</*"Nazwa: "<<*/this->Nazwa <<endl;
strumien_plik<</*"Producent: "<<*/this->Producent <<endl;
strumien_plik<</*"Cena: "<<*/this->Cenka <<endl;
strumien_plik<</*"Ilosc: " <<*/this->Ilosc <<endl;
//strumien_plik<<"--------------------------------"<<endl; 

strumien_plik.close();

cout<<"Zapisano dane do pliku"<< endl;
};

void baza::pobierz_z_pliku(){

ifstream strumien_plik;
strumien_plik.open("dane.txt", ios::in);

strumien_plik>>this->nr_ID; 
strumien_plik>>this->Nazwa;
strumien_plik>>this->Producent;
strumien_plik>>this->Cenka;
strumien_plik>>this->Ilosc;
strumien_plik.close();



cout <<"Wczytano"<<endl;

};

void baza::Cena(){

//ifstream strumien_plik;
//strumien_plik.open("dane.txt");

cout << "Cena: " << this->Cenka <<endl;
//strumien_plik.close();
};

void baza::menu(){
cout<<" *******************"<<endl;
cout<<" * MAGAZYN TOWAROW *\n";
cout<<" *******************"<<endl;
cout<<"\n Menu \n";
cout<<"\n1. Dodaj nowy towar ";
cout<<"\n2. Zapisz dane do pliku";
cout<<"\n3. Pobierz dane z pliku";
cout<<"\n4. Stan magazynu";
cout<<"\n5. Zakupy";
cout<<"\n6. Wyjscie \n"; 

};

_______________klasa.h ____________

#include <iostream>

using namespace std;

class baza {

private:
char nr_ID[50];
char Nazwa[50];
char Producent[50];
char Cenka[50];
char Ilosc[50];
public:
//char Cenka[5];
void Cena();
void pobierz();
void zapisz();
void pobierz_z_pliku();
void wyswietl();
void menu();
};

0

Mhm... szczerze Ci współczuję, że Ci wywala błędy :(

JAKIE BŁĘDY ? CZEMU KOD JEST BEZ WCIĘĆ ? CZEMU NIE WYDZIELIŁEŚ FRAGMENTU, KTÓRY POWODUJE BŁĄD ? Aghr... :>

0

Zrobiłem wcięcia.
Jest tak: 1) Otwieram program i dodaje nowy produkt(jeden)
2) Zapisuje produkt do pliku i zamykam konsole
3) Otwieram ponownie program i jak próbuje wczytać plik to mi sie wysypuje prog

Pokazuje się coś takiego:
(....)
break;
}
else if (_Ctype_fac.is(_Ctype::space,
_Ch = _Traits::to_char_type(_Meta))
|| _Ch == _Elem())
break; // whitespace or nul, quit
else
---------------->>> *_Str++ = _Traits::to_char_type(_Meta); // add it to string
CATCH_IO(_Istr)
}

*_Str = _Elem();	// add terminating null character
_Istr.width(0);
_Istr.setstate(_Str == _Str0 ? _State | ios_base::failbit : _State);
return (_Istr);
}

(....)
Strzałką zaznaczone gdzie sie wysypał.

1 użytkowników online, w tym zalogowanych: 0, gości: 1