Jäsenellekin on jäänyt tehtäviä. Jäsenen tulostus tietovirtaan voitaisiin tehdä esimerkiksi:
ostream &operator<<(ostream &os,const cJasen &jasen) { char erotin = jasen.erotin; os << jasen.tunnus_nro << erotin << jasen.nimi << erotin << jasen.hetu << erotin << jasen.katuosoite << erotin ... << jasen.jmaksu << erotin << jasen.maksu << erotin << jasen.lisatietoja << erotin; }
Nyt maksut tulostuisivat desimaaleiltaan varsin mielivaltaisesti. Jos tämä tyydyttää, niin em. tapa on aivan hyvä. Toisaalta voitaisiin tehdä apufunktio jonoksi, jonka tehtävänä on muotoilla reaaliluku merkkijonoksi siististi, esimerkiksi kahdella desimaalilla:
string jonoksi(double d) { char st[40]; double_jonoksi(N_S(st),d,"%4.2lf"); return string(st); }
Nyt reaalilukukenttien tulostus voitaisiin tehdä
... << jonoksi(jasen.jmaksu) << erotin << jonoksi(jasen.maksu) << erotin ...
Symmetriasyistä kaikille muillekin tietotyypeille voitaisiin tehdä vastaava funktio C++:an kuormitusmahdollisuuden ansiosta. Näin jäsenen tietovirtaan tulostaminen voisi olla myös:
string cJasen::getAsString() const { return jonoksi(tunnus_nro) + erotin + jonoksi(nimi) + erotin + jonoksi(hetu) + erotin + jonoksi(katuosoite) + erotin + jonoksi(postinumero) + erotin + jonoksi(postiosoite) + erotin + jonoksi(kotipuhelin) + erotin + jonoksi(tyopuhelin) + erotin + jonoksi(autopuhelin) + erotin + jonoksi(liittymisvuosi) + erotin + jonoksi(jmaksu) + erotin + jonoksi(maksu) + erotin + jonoksi(lisatietoja) + erotin; } ostream &operator<<(ostream &os,const cJasen &jasen) { os << jasen.getAsString(); return os; }
Tästä on vielä se lisäetu, että voidaan esimerkiksi tehdä jonoksi- funktiosta sellainen, että tietty kokonaislukuarvo tai reaalilukuarvo (esim. -1) tallentuu tyhjänä merkkijonona, tarkoittaen ettei arvoa ole syötetty. 0:han ei yleensä voi tällainen arvo olla, koska 0 on usein aivan järkevä syöttö.