Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is:laboratoare:10 [2020/10/08 17:32]
ruben_gilian.udroiu [3. Stream]
poo-is:laboratoare:10 [2020/10/12 15:14] (current)
ruben_gilian.udroiu [3. Stream]
Line 212: Line 212:
  
 Operatorii **<<​** si **>​**>​ sunt definiti dupa cum urmeaza: Operatorii **<<​** si **>​**>​ sunt definiti dupa cum urmeaza:
- +
   ostream &​operator<<​ (ostream &, consttip_de_baza &);   ostream &​operator<<​ (ostream &, consttip_de_baza &);
   ​   ​
Line 218: Line 218:
    
 Acestia pot fi supradefiniti pentru tipuri de date definite de utilizator: Acestia pot fi supradefiniti pentru tipuri de date definite de utilizator:
-  + 
-friend ostream&​ operator<<​ (ostream&,​ constTIP &); +  friend ostream&​ operator<<​ (ostream&,​ constTIP &); 
-friend istream&​ operator>>​ (istream&,​ TIP &); +  friend istream&​ operator>>​ (istream&,​ TIP &); 
- +
 Pe langa operatorii << si >>, clasele istream si ostream au implementate functiile elementare **get** si **put** Pe langa operatorii << si >>, clasele istream si ostream au implementate functiile elementare **get** si **put**
- +
   ostream&​ put (char c);   ostream&​ put (char c);
   istream&​ get (char& c);   istream&​ get (char& c);
  
 == Exemplu == == Exemplu ==
- +
   char ch;   char ch;
   cin.get(ch);​   cin.get(ch);​
Line 281: Line 281:
 === 3.2. ifstream, ofstream si fstream === === 3.2. ifstream, ofstream si fstream ===
 Pentru deschiderea de fisiere putem folosi constructorii cu/fara parametri pusi la dispozitie pentru toate tipurile de fisiere (intrare, iesire si intrare-iesire) Pentru deschiderea de fisiere putem folosi constructorii cu/fara parametri pusi la dispozitie pentru toate tipurile de fisiere (intrare, iesire si intrare-iesire)
-  + 
-ofstream::​ofstream(const char*nume, int mod=ios::​out,​ int acces=0) +  ofstream::​ofstream(const char*nume, int mod=ios::​out,​ int acces=0) 
-nume - numele fisierului +  nume - numele fisierului 
-mod - modul de acces +  mod - modul de acces 
-acces - tipul de protectie/​acces +  acces - tipul de protectie/​acces 
-  + 
-exemplu ​: ofstream ofis("​date1.txt",​ios::​app);​ +Exemplu 
- +  ​ofstream ofis("​date1.txt",​ios::​app);​ 
 Modurile (preferinite in clasa ios) sunt: Modurile (preferinite in clasa ios) sunt:
-ios::in - intrare +  *ios::in - intrare 
-ios::out - iesire +  *ios::out - iesire 
-ios::ate - deschidere cu pozitionare la sfarsitul fisierului +  *ios::ate - deschidere cu pozitionare la sfarsitul fisierului 
-ios::app - append, adaugare la sfarsitul fisierului +  *ios::app - append, adaugare la sfarsitul fisierului 
-ios::binary - deschidere in mod binar+  *ios::binary - deschidere in mod binar
    
-Nota: modurile ​pot fi combinate cu SAU logic la nivel de bit (|) +<​note>​Modurile ​pot fi combinate cu SAU logic la nivel de bit (|)
-  +
-acces = 0 - normal +
-      = 1 - read-only +
-      = 2 - hidden +
-      = 3 - sistem+
    
 +**Acces**
 +  *0 - normal
 +  *1 - read-only
 +  *2 - hidden
 +  *3 - sistem
 +</​note>​
 +
 Se poate folosi si functia cu efect similar: Se poate folosi si functia cu efect similar:
-void open (const char *nume_fisier,​ int mod, int acces)+  ​void open (const char *nume_fisier,​ int mod, int acces)
    
-In urma deschiderii,​ este indicata testarea pentru erori : +In urma deschiderii,​ este indicata testarea pentru erori: 
-if(!numefis) cout << "​eroare";​+  if (!numefis) cout << "​eroare";​ 
 + 
 +Pentru inchiderea unui fisier, se foloseste functia "​**void close();​**",​ functie ce este apelata de destructorul claselor ce lucreaza cu fisiere, deci fisierul va fi inchis **automat** la finalul duratei de viata a variabilei de tip fisier.
    
-Pentru inchiderea unui fisier, se foloseste functia "void close();",​ functie ce este apelata de destructorul claselor ce lucreaza cu fisiere, deci fisierul va fi inchis *automat* la finalul duratei de viata a variabilei de tip fisier. +Putem citi o linie dintr-un fisier text (sau cin) cu functia: 
-  +  getline(unsigned char *buf,   int l,    char delim); 
-Putem citi o linie dintr-un fisier text (sau cin) cu functia : + 
-  +Functia ​**getline** citeste in buf cel mult **l-1** caractere, pana la intalnirea caracterului ​**delim**, care este implicit ​**'​\n'​(newline)** si pune **'​\0'​** la sfarsitul liniei citite.
-getline(unsigned char *buf,   int l,    char delim); +
-  +
-Functia getline citeste in buf cel mult l-1 caractere, pana la intalnirea caracterului delim, care este implicit '​\n'​(newline) si pune '​\0'​ la sfarsitul liniei citite.+
    
 Exemplu: Exemplu:
-ifstream ifis("​date2.dat"​);​ +  ​ifstream ifis("​date2.dat"​);​ 
-char buf[256]; +  char buf[256]; 
-while(!ifis.eof()) {+  while(!ifis.eof()) {
         ifis.getline(buf,​ 256, '​\n'​);​         ifis.getline(buf,​ 256, '​\n'​);​
         cout << buf << endl;            cout << buf << endl;   
-}+  ​}
    
-*A se consulta cursul pentru mai multe exemple+<note important>​A se consulta cursul pentru mai multe exemple!</​note>​
    
-Fisiere binare+==Fisiere binare==
    
 In cazul fisierelor binare, nu se pot folosi functiile obisnuite de citire/​scriere deoarece datele nu sunt formatate in vreun fel anume. In cazul fisierelor binare, nu se pot folosi functiile obisnuite de citire/​scriere deoarece datele nu sunt formatate in vreun fel anume.
    
-Clasele specializate pentru fisiere binare includ doua functii pentru citirea si scrierea secventiala : write si read+Clasele specializate pentru fisiere binare includ doua functii pentru citirea si scrierea secventiala: ​ 
 +  -**write** 
 +  -**read** 
 + 
 +  istream&​ read(unsigned char *buf, intn); 
 +  ostream&​ write(constunsigned char *buf, intn);
    
-istream&​ read(unsigned char *buf, intn); +Functiile citesc/​scriu din/in fisierul respectiv **n octeti** in/​din ​buf
-ostream&​ write(constunsigned char *buf, intn);+
    
-Functiile citesc/​scriu din/in fisierul respectiv n octeti in/din buf +Pozitionarea absoluta in fisierul binar este realizata de metodele ​**seekg** (citire din **ifstream**) si **seekp** (scriere in **ofstream**): 
-  + 
-Pozitionarea absoluta in fisierul binar este realizata de metodele seekg (citire din ifstream) si seekp(scriere in ofstream) : +  ifstream&​ seekg(long poz, int reper); 
-  +  ofstream&​ seekp(long poz, int reper); 
-ifstream&​ seekg(long poz, int reper); +  poz = pozitia in octeti 
-ofstream&​ seekp(long poz, int reper); +  ​Reper ​poate fi una dintre constantele: ​ 
-  +     ios::beg (pozitionare fata de inceput) 
-poz = pozitia in octeti +     ios::cur (fata de pozitia curenta) ​ 
-reper poate fi una dintre constantele : ios::beg (pozitionare fata de inceput)ios::cur (fata de pozitia curenta)ios::​end(fata de sfarsit);+     ios::end (fata de sfarsit)
poo-is/laboratoare/10.1602167534.txt.gz · Last modified: 2020/10/08 17:32 by ruben_gilian.udroiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0