Problem z załadowaniem wartości struktury z pliku
Ostatnio zmodyfikowano 2014-01-16 08:03
chitler Temat założony przez niniejszego użytkownika |
Problem z załadowaniem wartości struktury z pliku » 2014-01-15 18:02:26 Napisałem program, w którym można dodawać elementy do tablicy dynamicznej vector, są one automatycznie dopisywane do pliku txt, lecz mam problem żeby odczytać te wartości przy nowym uruchomieniu programu. Elementami tablicy są struktury o dwóch polach string i int. Jak napisać funkcję load? Dopiero zaczynam operacje na plikach. #include<iostream> #include<string> #include<vector> #include<fstream> using namespace std;
int licznik = 0;
struct rekord { string nazwa; int numer; rekord( string nazwa, int numer ); };
rekord::rekord( string xnazwa, int xnumer ) : nazwa( xnazwa ) , numer( xnumer ) { } void addperson( vector < rekord >& tablica ) { string nazwa; int numer; cout << "podaj nazwe: "; cin >> nazwa; cout << "podaj numer: "; cin >> numer; tablica.push_back( rekord( nazwa, numer ) ); cout << "sukces" << endl; ofstream strumien( "dane.txt", ios::app ); if( strumien ) { strumien << tablica[ licznik ].nazwa << endl; strumien << tablica[ licznik ].numer << endl; } else { cout << "Blad zapisu!" << endl; } licznik++; }
void load( vector < rekord >& tablica ) { }
void showall( vector < rekord >& tablica ) { for( int i = 0; i < tablica.size(); i++ ) { cout << "Nazwa: " << tablica[ i ].nazwa << endl; cout << "numer: " << tablica[ i ].numer << endl; } }
int main() { vector < rekord > tablica; do { load( tablica ); addperson( tablica ); cout << "dodano" << endl; showall( tablica ); cout << "wyswietlono" << endl; } while( true ); return 0; }
|
|
alixir |
» 2014-01-16 08:03:57 Dane w pliku umieszczone są parami (po 2 linie), więc tak też należałoby je odczytywać. W sumie widzę, że kombinowałeś w tym kierunku, ale pewnie sypało ci błędami getline( strumien, numer ); A to dlatego, że dane z pliku pobierane są w postaci tekstu i nie da się ich wrzucić bezpośrednio do zmiennej int. Musisz posłużyć się pomocniczą zmienną tekstową np. string buff; getline( strumien, buff ); numer = atoi( buff.c_str() );
|
|
« 1 » |