150 likes | 255 Views
Programozás II. 9. Gyakorlat Alap file műveletek. fstream. A C++ nyelvben a file műveleteket is megvalósíthatjuk Stream-ek segítségével Így az alap file műveletek egyszerűen használhatóak Include-olni kell az fstream header-t , mely tartalmazza az alapvető műveleteket:
E N D
Programozás II. 9. GyakorlatAlap file műveletek
fstream A C++ nyelvben a file műveleteket is megvalósíthatjuk Stream-ek segítségével Így az alap file műveletek egyszerűen használhatóak Include-olni kell az fstreamheader-t, mely tartalmazza az alapvető műveleteket: #include <fstream> Beolvasáshoz: ifstream Íráshoz: ofstream
Alapvető megnyitási módok in : a fájlt olvasásra nyitjuk meg (fstream esetében ez az alapértelmezett) out : a fájlt írásra nyitjuk meg (ofstream esetében ez az alapértelmezett) app : hozzáfűzésre nyitjuk meg (append)
ofstream Az ofstream osztály segítségével file-ba tudunk adatokat írni. Konstruktorai: ofstream( ); //default konstruktor, a fájl megnyitását később kell végrehajtani ofstream( constchar * filename, ios_base::openmodemode = ios_base::out ); //konstruktor első paramétere a fájl elérési útja, 2. paramétere a megnyitás módja (alapértelmezett: out)
ofstream Példányosítás írásra: ofstreamout; out.open( fileName ); VAGY ofstreamout( fileName); ofstream alapértelmezetten írásra nyitja meg a fájlokat. A fenti használat ugyanaz, mintha így hoztuk volna létre: ofstream out( fileName, ofstream::out);
ofstream Példányosítás hozzáfűzésre: ofstreamout; out.open( fileName, ofstream::app ); VAGY ofstreamout( fileName, ofstream::app );
ofstream Használat: int a = 5; doubleb = 3.4; char* str = ”dfnsknfjksd”; ofstreamout( ”out.txt” ); out << a << b << str << endl; out.close(); //le kell zárni
ifstream Az ifstream segítségével file-ból tudunk olvasni. Konstruktorai: ifstream ( ); //default konstruktor, a fájl megnyitását később kell végrehajtani ifstream( constchar * filename, ios_base::openmodemode = ios_base::in); //konstruktor első paramétere a fájl elérési útja, 2. paramétere a megnyitás módja (alapértelmezett: in)
ifstream Példányosítás olvasásra: ifstreamin; in.open( filename ); VAGY ifstreamin( filename );
ifstream Használat: ifstreamin( ”input.txt” ); inta; double b; in >> a >> b; in.close();
Egész sor beolvasása ifstream in( ”input.txt” ); char input[ 256 ]; in.getline( input, 256 ); #include<string> ifstreamin( ”input.txt” ); string input; getline( in, input );
Közös függvények is_open() //megadja, hogynyitva van-e file open(constchar * filename, ios_base::openmode mode = ios_base::out ) //megnyitja a file-t (ofstream) open(constchar * filename, ios_base::openmode mode = ios_base::in ) //megnyitja a file-t (ifstream) close() //lezárja a file-t eof() //true, ha elértük a file végét
Kivételkezelés alapjai Az olyan kódrészleteknél, melyek „hibát” eredményezhetnek, érdemes lehet try-catch blokkokat használnunk. A „hibát okozó”, és az azzal közvetlen összefüggésben lévő program részletet tesszük try blokkba.Ekkor, ha hiba történik, lehetőség van egy exception-t (kivételt) dobni (throw). Ezt a kivételt „kaphatjuk el”, és kezelhetjük a catch blokkban.
Kivételkezelés alapjai Példa (kivétel dobása): constint DivideByZero = 10; //a hiba kódja //függvény, mely eloszt két számot doubledivide(double x, double y) { if(y==0) { //ha az osztó 0 throwDivideByZero; //dob egy kivételt (itt egy 10-es kódú kivételt), és a függvénynek meg is áll a futása } returnx/y; //ha nem volt kivétel, végrehajtja az osztást }
Kivételkezelés alapjai Példa (kivétel elkapása): try { //try blokkba rakjuk az osztás függvényt, hiszen dobhat hibát (előző dia…) divide(10, 0); } catch(int i) { //ha dobott egy int típusú kivételt, azt elkapjuk if(i==DivideByZero) { //ha a kivétel ilyen típusú volt, kiírjuk az errort cerr<<"Dividebyzeroerror"; } }