serieomkoding structs

stemmer
0

Jeg jobber med et lekser prosjektet og jeg prøver å lagre inventar data til en fil.

Beholdningen data størrelse bør ikke være for stor årsak teknisk ingen kommer til å virkelig bruke den.

Jeg trenger å skrive dette innholdet til en fil:

• Element Beskrivelse • Antal Hånd • Engros Kostnad • Retail Kostnads ​​• Lagt til inventar

Jeg kommer til å trenge å gjøre et grensesnitt som tillater meg å gjøre dette:

• Legg til nye poster til filen • Vise noe rekord i filen • Endre en oppføring i filen

Struct ville være den enkleste måten å gå om dette imo. Hvis jeg bare kan finne ut hvordan du skal lese / skrive structs til en fil skal dette være veldig enkelt.

Hvis du kunne gi et lite eksempel på hvordan du gjør dette ville jeg virkelig pris på det.

Takk!

Publisert på 01/04/2009 klokken 22:58
kilden bruker
På andre språk...                            


4 svar

stemmer
2

Hvis du ikke bryr deg virkelig lavt nivå, kan du bare litt kopiere structs inn og ut ved å kaste en peker til struct til void*og bruke sizeof()for å få struct lengde. (IIRC deres er en måte å dumpe / lese et tomrom buffer til / fra en fil)


Merk dette fungerer bare hvis dataene har ingen pekere / referanser / etc.


Jeg liker Cs IO bedre enn C ++ 's så:

typedef struct { int hi; int mon; char[35] dat; } S;

S s;
S arr[22];
int f;

  // write
f = open(/* I forget the args*/);

  // one
if(sizeof(s) != write(f, &s, sizeof(s))) Error();
  // many
if(sizeof(arr) != write(f, arr, sizeof(arr))) Error();

close(f);

  // read
f = open(/* I forget the args*/);

  // one
if(sizeof(s) != read(f, &s, sizeof(s))) Error();
  // many
if(sizeof(arr) != read(f, arr, sizeof(arr))) Error();

close(f);
Svarte 01/04/2009 kl. 23:10
kilden bruker

stemmer
2

Spør læreren din, kan du bruke boost-bibliotek.
Hvis ja, kan du lese boost serilization tutorial, den inneholder en enkle eksempler: http://www.boost.org/doc/libs/1_38_0/libs/serialization/doc/tutorial.html

Men hvis du vil forstå hvordan å arbeide med filer, bør du gjøre dette fungerer uten hjelp eller boost.

Hvis du vil arbeidene med std :: [io] fstreams bør du bestemme hvilket format du vil støtte:
- tekst - for denne saken beste måten definerer operatør << og operatør >> og bruke dem til å skrive struktur til fil eller lese;
- Binary - strukturen bør være POD (vanlig gamle data) og ikke bør inneholde pekere - og du vil bruke lese og skrive bekker metoder.
eksempel for binærfil:
http://www.codeguru.com/forum/showthread.php?t=269648

Svarte 01/04/2009 kl. 23:06
kilden bruker

stemmer
1

Iostream bibliotek gjør det

Den ofstream klassen inneholder grensesnittet for å skrive data til filer som output bekker.

Den ifstream klasse inneholder grensesnittet for å lese data fra filer som i innkommende strømmer

Rediger- Eksempel

Svarte 01/04/2009 kl. 23:03
kilden bruker

stemmer
0

Jeg ville gå med XML; det er strukturert, det er tekstbasert, slik at du kan se på det med en hvilken som helst tekst editor.

Svarte 01/04/2009 kl. 23:02
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more