1 DEFINIIE
Fiierul este o structur ordonat de date extern format dintr-o mulime ordonat de nregistrri, ordonarea fcndu-se dup numrul nregistrrii.
2 MODUL DE DESCHIDERE
Forma general de declarare a fiierului este:
sau
fstream f(C:\\fisier.txt, ios::mod_de_deschidere);
Un fiier poate fi deschis n diferite moduri, pentru scopuri diferite.
ate app
Funcia
eof() close() tellp() tellg()
Realizeaz
Se folosete pentru a detecta sfritul de fiier. Dac valoarea citit in poziia curent este codul ASCII pentru sfritul de fiier, funcia returneaz valoare 1, altfel returneaz valoarea 0. nchide un fiier deschis. Furnizeaz poziia pointerului fa de nceputul fiierului la scriere. Rezultatul furnizat este de tip long. Furnizeaz poziia pointerului fa de nceputul fiierului la citire. Rezultatul furnizat este de tip long. Deplaseaz pointerul la poziia precizat la scriere x deplasarea fa de o poziie de referin precizat prin parametrul y. y o constant de sistem care poate aveauna dintre valorile: 1. beg nceput de fiier 2. cur poziia curenta 3. eof sfrit de fiier Parametrul x este de tip long i poate avea valori pozitive (deplasarea se face la dreapta poziiei de referin) sau negative (deplasarea se face la stnga poziiei de referin) Deplaseaz pointerul la poziia precizat la citire. x i y au acelai rol ca i pentru funcia seekp(x,y). Stabilete starea fluxului de date la valoarea precizat. Parametrul x este de tip ntreg. Dac are valoarea 0, starea fluxului este bun (se poate executa operaia de citire). Dac este 1 nseamn c s-a ajuns la sfritul fiierului. Extrage un caracter dintr-un ir de caractere x pn se ntmpl unul dintre evenimentele: a ntlnit marcajul de endl (sfrit de fiier) sau marcajul eof, au fost citite caractre sau a citit caracterul folosit ca delimitator d. Extrage urmtorul caracter sau marcajul de sfrit de fiier. Are acelai efect ca i get(x,n,d), cu deosebirea c extrage i delimitatorul de sfrit de linie (/n sau d) Redenumete un fiier. Parametrii x si y sunt de tip char i reprezint: x numele vechi, iar y numele nou. terge un fiier. x reprezint numele fiierului i este de tip char.
seekp(x,y)
seekg(x,y)
clear(x)
1. Fluxul de date al tastaturii (cin>>ch) pentru citire de la tastatur: Sursa este tastatura (fiierul standard cin); Destinaia este o variabil de memorie (ch). 2. Fluxul de date al fiierului (f<<ch) pentru scriere n fiier: Sursa este o variabil de memorie (ch); Destinatia este fiierul (f).
Tastatur
Memorie intern
Fiier
Exemplu:
1. Fluxul de date al fiierului (f>>ch) pentru citire din fiier: Sursa este fiierul (f); Destinaia este o variabil de memorie (ch). 2. Fluxul de date al monitorului (cout<<ch) pentru scriere pe ecran: Sursa este variabila de memorie (ch); Destinatia este monitorul (fiierul standard cout).
Fiier
Memorie intern
Ecran
Identificator Tip
x_precision x_width x_fill x_flags int int int long
Coninut
Numrul de poziii pentru partea fracionar care se afieaz pentru un numr real. Numrul de poziii pe care se face afiarea(limea cmpului pentru afiare). Caracterul de umplere folosit; acest caracter va fi scris n poziiile libere ale cmpului de afiare (poziiile n care nu este scris dat). Conine o masc, construit la nivel de bii, pentru formatare intrrilor i a ieirilor. Pentru tipurile de formatri permise, sunt definite constante de sistem care pot fi atribuite variabilei.
Pentru a avea acces la aceste variabile i constante de sistem, se folosesc manipulatorii. Pentru a putea folosi manipulatorii, avem nevoie de fiierul antet <iomanip.h>. Manipulatori pentru operaia de scriere
Manipulator Tip x
setprecision(x) setw(x) setfill(x) Exemplu: int Int char
Aces la
x_precisio n x_width x_fill
Realizeaz
Stabilete precizia (nr-ul de poziii pentru partea fracionar) la afiarea unui nr. real; x reprezint nr-ul zecimalelor. Stabilete nr-ul de poziii pa care se face afiarea; x reprezint limea cmpului pentru afiare. Stabilete caracterul de umplere folosit; x reprezint caracterul.
#include<iostream.h> #include<iomanip.h> void main() { float x=0.12345; cout<<setw(5)<<setprecision(2)<<setfill(0)<<x; } Se va afisa 00.12. Manipulatorul setw(5) seteaz limea cmpului de afiare la 5, setprecision(2) face ca precizia de afiare s fie de 2 cifre, iar caracterul de umplere este 0.
Maipulator
setiosflags(masca) resetiosflags(masca)
Realizeaz
Seteaz biii precizai n masc (biii precizai vor avea valoarea 1) i atribuie masca variabilei x_flags. Reseteaz biii precizai n masc (biii precizai vor avea valoarea 0) i atribuie masca variabilei x_flags.
Constanta
skipws left right internal dec oct hex showbase showpoint uppercase showpos scientific fixed
Semnificaie
Caracterele albe care preced valoarea care urmeaz s fie citit sunt ignorate. Afiarea caracterelor se face cu aliniere la stnga. Afiarea caracterelor se face cu aliniere la dreapta. Dac limea cmpului pentru afiare este mai mare dect numrul de poziii ocupate de dat, afiarea semnului numrului se face cu aliniere la stnga, iar a numrului la dreapta. Se face conversia numrului n zecimal. Se face conversia numrului n octal. Se face conversia numrului n hexazecimal. Se utilizeaz indicatorul bazei de numerotaie. Este forat afiarea punctului zecimal, char dac numrul real are o valoare ntreag. Pentru afiarea numerelor hexazecimale se folosesc litere mari. Pentru valorile numerice pozitive se afieaz semnul +. Pentru afiarea numerelor reale se folosete notaia tiinific. Pentru afiarea valorilor reale se folosete forma normal(cu semn si separatorul punct)
Pentru formarea unei mti cu ajutorul constantelor de sistem se pot folosi construcii de forma:
O valoare numeric ntreag va fi convertit in hexazecimal, folosindu-se litere mari i va fi afiat cu aliniere la dreapta.
#include<iostream.h> #include<fstream.h> #include<iomanip.h> void main() { char ch, nume[20]; cout<<"Nume fisier="; cin>>nume; fstream f1(nume, ios::out); fstream f2(nume, ios::in); while (cin>>resetiosflags(ios::skipws)>>ch) f1<<ch; f1.close(); while (f2>>resetiosflags(ios::skipws)>>ch) cout<<ch; f2.close(); }
//se creeaz stream-ul f1 pentru scriere n fiier // se creeaz stream-ul f2 pentru citire din fiier // se citesc datele de intrare de la tastatur //datele citite sunt memorate m fiier, inclusiv spaiile //se nchide stream-ul f1 // se citesc datele din fiierul nume // sunt afiate datele din fiierul nume, inclusiv spaiile // se nchide stream-ul f2