Article View: be.comp.programming
Article #12595Re: binaire I/O van/naar files ?
From: Bart.Vanhauwaert
Date: Fri, 26 Oct 2001 16:01
Date: Fri, 26 Oct 2001 16:01
49 lines
2565 bytes
2565 bytes
Benoit Liessens <benoit.liessens@freeweb.be> wrote:
> Kan ik dus m.b.v. binair I/O een zelfgedefinieerde klasse wegschrijven
> zonder te weten welke dataleden er in zitten ?
Ja, maar het zal niet noodzakelijk werken.
(Als dat geen dubbelzinnig antwoord is).
Als je class een simpele aggregatie is van simpele datatypes (of
andere classes die op hun beurt weer enkel uit simpele datatypes
bestaan), zal de zaak inderdaad werken. Typevoorbeeld
class Datum
{
unsigned int Dag, Maand, Jaar;
};
Probleem is dat je meestal heel wat meer in een class steekt. References,
pointers, (standaard) containers. Typevoorbeeld
class Persoon
{
std::string Naam;
Datum GeboorteDag;
std::vector<Persoon*> Kinderen;
};
Kortom. Binaire IO werkt slechts in een minderheid van de gevallen.
Bovendien 'breek' je zo de abstractie die classes je bieden. Je kan
namelijk het Datum type niet meer aanpassen zonder ermee rekening
te houden dat er enkel simpele dingen in mogen zitten, zonder ermee
rekening te houden dat je oude bestanden niet meer kan lezen, etc...
En de miserie is nog niet gedaan want als je ooit je programma
compileert met een andere compiler ben je ook niet zeker dat je
de zaak nog kan lezen. Bovendien kan je slechts moeilijk met de hand
het bestand gaan controleren.
Kortom : binaire bestanden zijn miserie en je vermijdt ze best
indien mogelijk.
Het zelf schrijven van een <<operator voor een ostream is misschien
iets meer werk, maar wel stukken handiger/veiliger/'juister'.
En die operator laat je dan ook best gewoon utf-8 encoded
spul uitspuwen bijvoorbeeld.
cu bart
--
http://www.irule.be/bvh/be/politics
Technical Details
Message-ID:
<pc1cr9.3hj.ln@10.0.0.2>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!skynet.be!skynet.be!louie!not-for-mailReferences:
<3bd96c4c$0$12226$4d4efb8e@news.be.uu.net>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,51b600488bc6eb17
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-10-26 10:49:41 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!skynet.be!skynet.be!louie!not-for-mail
Sender: - <bvh@ns1.irule.be>
From: Bart.Vanhauwaert@nowhere.be
Subject: Re: binaire I/O van/naar files ?
Newsgroups: be.comp.programming
References: <3bd96c4c$0$12226$4d4efb8e@news.be.uu.net>
User-Agent: tin/1.4.4-20000803 ("Vet for the Insane") (UNIX) (Linux/2.2.17-21mdksecure (i686))
Date: Fri, 26 Oct 2001 18:01:29 +0200
Message-ID: <pc1cr9.3hj.ln@10.0.0.2>
Lines: 49
NNTP-Posting-Host: 194.78.202.248
X-Trace: 1004118579 reader0.news.skynet.be 21083 194.78.202.248
X-Complaints-To: abuse@skynet.be