Sunteți pe pagina 1din 7

Fiiere n C++

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:

fstream f(nume fiier, ios::mod_de_deschidere);

sau
fstream f(C:\\fisier.txt, ios::mod_de_deschidere);
Un fiier poate fi deschis n diferite moduri, pentru scopuri diferite.

Modul de deschidere Operaii permise


in Fiierul se deschide pentru citire. Fiierul se deschide pentru scriere. Dac el exista deja, scrierea se va face la nceputul lui (vechiul coninut se pierde). Dac nu, se creeaz. Dup deschidere (pentru scriere sau citire) se face un salt la sfritul fiierului. Fiierul se deschide pentru adugare (scriere la sfritul fiierului), dac fiierul nu exist, se creeaz. Dac fiierul exist, se deschide pentru scriere la nceputul lui (datele din fiier se pierd). Fiierul va fi deschis numai daca exist. (Dac nu exist nu va fi creat). Dac fiierul nu exist, va fi deschis pentru creare, altfel nu este deschis. Se deschide un fiier binar. out

ate app

trunc nocreate noreplace binary

3 FUNCII DE SISTEM PENTRU PRELUCRAREA FIIERELOR


n prelucrarea unui fiier, sunt utile urmtoarele funcii de sistem:

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)

get(x,n,d) get() getline(x,n,d) rename(x,y) remove(x)

4 OPERAIA DE SCRIERE N FIIER


Pentru citirea datelor de la tastatur i scrierea lor ntr-un fiier text, se folosesc dou fluxuri de date:

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:

#include<fstream.h> main() { fstream f("D:\\fis.txt",ios::out); char ch; while(cin>>ch) f<<ch; f.close(); }

5 OPERAIA DE CITIRE DIN FIIER


Pentru citirea datelor din fiier i scrierea lor pe ecranul monitorului, se folosesc dou fluxuri de date:

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

#include<fstream.h> main() { fstream f("D:\\fis.txt",ios::in); char ch; while(f>>ch) cout<<ch; f.close(); }

6 CITIRI I SCRIERI CU FORMAT


Pentru ca citirea i scrierea datelor s se poat face cu format, se folosesc variabile de memorie i constante de memorie definite in biblioteca <iostream.h>. Variabilele de memorie sistem sunt:

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.

Accesul la cea de a patra variabil x_flags este controlat prin manipulatorii:

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.

Constantele folosite in masca de formatare

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:

ios::const_1 | ios::_const_2 | ios::const_3


De exemplu, prin masca

ios::right | ios::hex | ios::uppercase

O valoare numeric ntreag va fi convertit in hexazecimal, folosindu-se litere mari i va fi afiat cu aliniere la dreapta.

Exemplu de convertire dintr-o baz de numeraie n alta:


#include<iostream.h> #include<fstream.h> #include<iomanip.h> void main() { int a; float x=123; cout<<"a="; cin>>a; cout<<setw(6)<<setprecision(2)<<setiosflags(ios::showpoint)<<x<<endl; \\ 123.00 cout<<setiosflags(ios::hex)<<setiosflags(ios::uppercase)<<a; \\ 1E }

Exemplu de citire i scriere cu format:

#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

S-ar putea să vă placă și

  • Lab13 s1 An1 23 24
    Lab13 s1 An1 23 24
    Document29 pagini
    Lab13 s1 An1 23 24
    Alex Feisan
    Încă nu există evaluări
  • Intrarea Iesirea Informatiei
    Intrarea Iesirea Informatiei
    Document15 pagini
    Intrarea Iesirea Informatiei
    Mister Anonim
    Încă nu există evaluări
  • Fisieretext
    Fisieretext
    Document29 pagini
    Fisieretext
    DeekyDZ
    Încă nu există evaluări
  • Fișierele În C++
    Fișierele În C++
    Document3 pagini
    Fișierele În C++
    Chiriac Olga
    Încă nu există evaluări
  • Fisiere Text C++
    Fisiere Text C++
    Document4 pagini
    Fisiere Text C++
    Adrian NITU
    Încă nu există evaluări
  • Curs 13
    Curs 13
    Document17 pagini
    Curs 13
    Lungu Madalin
    Încă nu există evaluări
  • Fişiere Text
    Fişiere Text
    Document4 pagini
    Fişiere Text
    Zach Yeet
    Încă nu există evaluări
  • Streamuri
    Streamuri
    Document24 pagini
    Streamuri
    mateidlv28
    Încă nu există evaluări
  • Fisiere C++
    Fisiere C++
    Document5 pagini
    Fisiere C++
    p_isaic989
    Încă nu există evaluări
  • Fisiere C++
    Fisiere C++
    Document13 pagini
    Fisiere C++
    camsop75
    Încă nu există evaluări
  • Laboratorul 12. Operałii de Intrare/Ieşire. Fişiere
    Laboratorul 12. Operałii de Intrare/Ieşire. Fişiere
    Document8 pagini
    Laboratorul 12. Operałii de Intrare/Ieşire. Fişiere
    Nick Holdan
    Încă nu există evaluări
  • Fisiere in C Si C++
    Fisiere in C Si C++
    Document12 pagini
    Fisiere in C Si C++
    LucyanT
    Încă nu există evaluări
  • Teorie Fisiere
    Teorie Fisiere
    Document2 pagini
    Teorie Fisiere
    teodorcalin2007
    Încă nu există evaluări
  • Operatii Cu Fisiere
    Operatii Cu Fisiere
    Document12 pagini
    Operatii Cu Fisiere
    Cătălin Bursuc
    Încă nu există evaluări
  • Prelucrarea Fisierelor
    Prelucrarea Fisierelor
    Document19 pagini
    Prelucrarea Fisierelor
    Dragos George Spataru
    Încă nu există evaluări
  • Laborator 12,13 PDF
    Laborator 12,13 PDF
    Document9 pagini
    Laborator 12,13 PDF
    Denis Minjineanu
    Încă nu există evaluări
  • Functii
    Functii
    Document4 pagini
    Functii
    istef2010
    Încă nu există evaluări
  • Lectia 3-cls9
    Lectia 3-cls9
    Document5 pagini
    Lectia 3-cls9
    Nicu Vlad Laurentiu
    Încă nu există evaluări
  • Indr Lab C
    Indr Lab C
    Document77 pagini
    Indr Lab C
    Andrei Costin
    Încă nu există evaluări
  • Lab4 s1 Anfgbxdg1 12 13
    Lab4 s1 Anfgbxdg1 12 13
    Document8 pagini
    Lab4 s1 Anfgbxdg1 12 13
    Cristina Schuster
    Încă nu există evaluări
  • Fişiere C++
    Fişiere C++
    Document4 pagini
    Fişiere C++
    Antonio Roman
    Încă nu există evaluări
  • Operatii de Intrare Iesirepascal C
    Operatii de Intrare Iesirepascal C
    Document16 pagini
    Operatii de Intrare Iesirepascal C
    Eduard Constantinescu
    Încă nu există evaluări
  • Fisier Text
    Fisier Text
    Document7 pagini
    Fisier Text
    Ilinca Simescu
    Încă nu există evaluări
  • Curs 12
    Curs 12
    Document26 pagini
    Curs 12
    Daniel Popa
    Încă nu există evaluări
  • Fisiere Text in C++
    Fisiere Text in C++
    Document1 pagină
    Fisiere Text in C++
    Raducu Serenela
    Încă nu există evaluări
  • TP.4.Buza Dina
    TP.4.Buza Dina
    Document6 pagini
    TP.4.Buza Dina
    Dina Buză
    Încă nu există evaluări
  • Fisiere Binare
    Fisiere Binare
    Document9 pagini
    Fisiere Binare
    Robert Ursu
    Încă nu există evaluări
  • Fisiere in C
    Fisiere in C
    Document5 pagini
    Fisiere in C
    Raluca-Maria Sălcudean
    Încă nu există evaluări
  • Curs5 POO 2009 Protejat
    Curs5 POO 2009 Protejat
    Document24 pagini
    Curs5 POO 2009 Protejat
    Hainagiu Gianina
    Încă nu există evaluări
  • Teorie - 01 - Fisiere Partea 1
    Teorie - 01 - Fisiere Partea 1
    Document3 pagini
    Teorie - 01 - Fisiere Partea 1
    Anonymous CZYe2H
    Încă nu există evaluări
  • I/O Introducere
    I/O Introducere
    Document26 pagini
    I/O Introducere
    Anna Maria
    Încă nu există evaluări
  • Functii C
    Functii C
    Document4 pagini
    Functii C
    Mirel
    Încă nu există evaluări
  • Arhivare. Accesorii Windows
    Arhivare. Accesorii Windows
    Document5 pagini
    Arhivare. Accesorii Windows
    ELENA-CRISTINA JDERU
    Încă nu există evaluări
  • Lab 11
    Lab 11
    Document3 pagini
    Lab 11
    Ionut Valentin
    Încă nu există evaluări
  • Lab05 s1 An1 19 20
    Lab05 s1 An1 19 20
    Document11 pagini
    Lab05 s1 An1 19 20
    Adrian Muresan
    Încă nu există evaluări
  • Lectia C++
    Lectia C++
    Document70 pagini
    Lectia C++
    Radovan Jaic
    100% (1)
  • Python - Curs 2
    Python - Curs 2
    Document26 pagini
    Python - Curs 2
    Dana Sutan
    Încă nu există evaluări
  • DSAD2
    DSAD2
    Document34 pagini
    DSAD2
    Lavinia Graure
    Încă nu există evaluări
  • Sem 05 - Anexa Aspecte Teoretice
    Sem 05 - Anexa Aspecte Teoretice
    Document4 pagini
    Sem 05 - Anexa Aspecte Teoretice
    Oana Vasile
    Încă nu există evaluări
  • laborator 6 Sava Victoria - копия
    laborator 6 Sava Victoria - копия
    Document10 pagini
    laborator 6 Sava Victoria - копия
    VictoriaSava
    Încă nu există evaluări
  • Lab05 s1 An1 22 23
    Lab05 s1 An1 22 23
    Document12 pagini
    Lab05 s1 An1 22 23
    Ciprian Ucrainet-Cretu
    Încă nu există evaluări
  • SDA Lab 1
    SDA Lab 1
    Document16 pagini
    SDA Lab 1
    Ciobanu Alina
    Încă nu există evaluări
  • Lab 7
    Lab 7
    Document4 pagini
    Lab 7
    Elliot Alderson
    Încă nu există evaluări
  • Int Out Fisiere
    Int Out Fisiere
    Document2 pagini
    Int Out Fisiere
    Pop Alin
    Încă nu există evaluări
  • Tipul Fisier
    Tipul Fisier
    Document3 pagini
    Tipul Fisier
    Victor Burcovski
    Încă nu există evaluări
  • Seminar 02
    Seminar 02
    Document15 pagini
    Seminar 02
    Robert Adrian Pietroiu
    Încă nu există evaluări
  • Operatii de Citire Si Scriere
    Operatii de Citire Si Scriere
    Document16 pagini
    Operatii de Citire Si Scriere
    Petrescu Alexandru
    Încă nu există evaluări
  • Presia Huffman
    Presia Huffman
    Document4 pagini
    Presia Huffman
    Sorin Andrei
    Încă nu există evaluări
  • Fisiere Text in Python3
    Fisiere Text in Python3
    Document13 pagini
    Fisiere Text in Python3
    Calin Gruia
    Încă nu există evaluări
  • Fisiere Pascal
    Fisiere Pascal
    Document19 pagini
    Fisiere Pascal
    Maria Marinela
    Încă nu există evaluări
  • Slide Curs 8 Python 1
    Slide Curs 8 Python 1
    Document24 pagini
    Slide Curs 8 Python 1
    Maria Georgescu
    Încă nu există evaluări
  • 4 Fluxuri
    4 Fluxuri
    Document10 pagini
    4 Fluxuri
    Dorw123
    Încă nu există evaluări
  • Curs 13 POO
    Curs 13 POO
    Document9 pagini
    Curs 13 POO
    R0ckstar
    Încă nu există evaluări
  • BPC 5 Fișiere
    BPC 5 Fișiere
    Document42 pagini
    BPC 5 Fișiere
    Vitalie Ambrosi
    Încă nu există evaluări
  • Probleme - Laborator
    Probleme - Laborator
    Document63 pagini
    Probleme - Laborator
    Gilca Gheorghe
    Încă nu există evaluări
  • Retele de Calculatoare Proiect
    Retele de Calculatoare Proiect
    Document7 pagini
    Retele de Calculatoare Proiect
    Vasy Andrew
    Încă nu există evaluări
  • Polinoame Book PDF
    Polinoame Book PDF
    Document70 pagini
    Polinoame Book PDF
    Lăscău Ionut Sebastian
    Încă nu există evaluări
  • Curs 7 ME
    Curs 7 ME
    Document7 pagini
    Curs 7 ME
    Vasy Andrew
    Încă nu există evaluări
  • Compunerea Acceleratiilor
    Compunerea Acceleratiilor
    Document4 pagini
    Compunerea Acceleratiilor
    Vasy Andrew
    Încă nu există evaluări
  • 276 Progresii
    276 Progresii
    Document0 pagini
    276 Progresii
    Mitrea Andrei-Daniel
    Încă nu există evaluări
  • Formule Algebra
    Formule Algebra
    Document4 pagini
    Formule Algebra
    Marian Neagu
    100% (2)
  • Formule Matematica Bacalaureat BAC - Analiza
    Formule Matematica Bacalaureat BAC - Analiza
    Document4 pagini
    Formule Matematica Bacalaureat BAC - Analiza
    Alecs Curly
    100% (2)
  • Geometrie Analitica
    Geometrie Analitica
    Document4 pagini
    Geometrie Analitica
    Cosmin Ghirisan
    Încă nu există evaluări
  • Formule Geometrie PDF
    Formule Geometrie PDF
    Document3 pagini
    Formule Geometrie PDF
    Ellis Dinculeană
    Încă nu există evaluări
  • Formule Trigonometrie
    Formule Trigonometrie
    Document2 pagini
    Formule Trigonometrie
    Liviu Constantin
    Încă nu există evaluări
  • Mate - Info.ro.233 Functii Trigonometrice
    Mate - Info.ro.233 Functii Trigonometrice
    Document3 pagini
    Mate - Info.ro.233 Functii Trigonometrice
    Andreea Mixplore
    100% (1)
  • Șiruri de Caractere În C++
    Șiruri de Caractere În C++
    Document10 pagini
    Șiruri de Caractere În C++
    Vasy Andrew
    Încă nu există evaluări
  • Formule Pentru BAC Matematica Subiectul 1 M1
    Formule Pentru BAC Matematica Subiectul 1 M1
    Document7 pagini
    Formule Pentru BAC Matematica Subiectul 1 M1
    Vasy Andrew
    93% (219)
  • Figuri de Stil
    Figuri de Stil
    Document3 pagini
    Figuri de Stil
    Vasy Andrew
    100% (1)
  • De la Everand
    Încă nu există evaluări
  • De la Everand
    Încă nu există evaluări