Upload
wanda
View
26
Download
1
Embed Size (px)
DESCRIPTION
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: - PowerPoint PPT Presentation
Citation preview
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Programozás II.
9. GyakorlatAlap file műveletek
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
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:
#include <fstream> Beolvasáshoz: ifstream Íráshoz: ofstream
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
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)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
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 ( const char * filename, ios_base::openmode
mode = 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)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
ofstream Példányosítás írásra:
ofstream out;
out.open( fileName ); VAGY
ofstream out( 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);
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
ofstream Példányosítás hozzáfűzésre:
ofstream out;
out.open( fileName, ofstream::app ); VAGY
ofstream out( fileName, ofstream::app );
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
ofstream Használat:
int a = 5;
double b = 3.4;
char* str = ”dfnsknfjksd”;
ofstream out( ”out.txt” );
out << a << b << str << endl;
out.close(); //le kell zárni
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
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 ( const char * filename, ios_base::openmode
mode = 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)
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
ifstream Példányosítás olvasásra:
ifstream in;
in.open( filename ); VAGY
ifstream in( filename );
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
ifstream Használat:
ifstream in( ”input.txt” );
int a;
double b;
in >> a >> b;
in.close();
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Egész sor beolvasása ifstream in( ”input.txt” );
char input[ 256 ];
in.getline( input, 256 ); #include<string>
ifstream in( ”input.txt” );
string input;
getline( in, input );
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Közös függvények is_open() //megadja, hogy nyitva van-e file open(const char * filename, ios_base::openmode
mode = ios_base::out ) //megnyitja a file-t (ofstream) open(const char * 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
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
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.
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
Kivételkezelés alapjai Példa (kivétel dobása):
const int DivideByZero = 10; //a hiba kódja
//függvény, mely eloszt két számot
double divide(double x, double y) {
if(y==0) { //ha az osztó 0
throw DivideByZero; //dob egy kivételt (itt egy 10-es kódú kivételt), és a függvénynek meg is áll a futása
}
return x/y; //ha nem volt kivétel, végrehajtja az osztást
}
UN
IVER
SIT
Y O
F SZ
EG
ED
Dep
artm
ent o
f Sof
twar
e E
ngin
eeri
ng
UN
IVE
RS
ITA
S S
CIE
NT
IAR
UM
SZ
EG
ED
IEN
SIS
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<<"Divide by zero error";
}
}