19.2.3 Jäsenistön tehtävät lukemisessa
Lopulta jäsenistö on taas se joka joutuu hommiin:
talletus.2\jasenet.cpp - lukeminen
const char *cJasenet::luo(const string &tied,const string &nimi,int max_koko)
{
IF_ERR_RETURN(luo_taulukko(max_koko));
tiedoston_nimi = tied;
koko_nimi = nimi;
muutettu = 1;
return NULL;
}
...
const char *cJasenet::lue_tiedostosta(const string &tied)
{
ifstream f(tied.c_str());
if ( !f ) return TIED_EI_AUKEA;
string nimi; lue_rivi(f,nimi); if ( !f ) return EI_NIMEA;
int max_koko; lue_rivi(f,max_koko); if ( !f ) return EI_MAXKOKOA;
IF_ERR_RETURN(luo_taulukko(max_koko));
tiedoston_nimi = tied;
koko_nimi = nimi;
char rivi[400];
cJasen uusi;
while ( f ) {
lue_rivi(f,rivi,sizeof(rivi));
if ( rivi[0] == 0 || rivi[0] == ';' ) continue;
uusi.alusta(rivi);
// f >> uusi; // vaatisi kunkin rivin olemisen täydellisenä, muuten OK!
IF_ERR_RETURN(lisaa(uusi));
}
muutettu = 0;
return NULL;
}