15
UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek

Programozás II

  • 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

Page 1: Programozás II

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

Page 2: Programozás II

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

Page 3: Programozás II

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)

Page 4: Programozás II

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)

Page 5: Programozás II

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);

Page 6: Programozás II

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 );

Page 7: Programozás II

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

Page 8: Programozás II

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)

Page 9: Programozás II

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 );

Page 10: Programozás II

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();

Page 11: Programozás II

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 );

Page 12: Programozás II

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

Page 13: Programozás II

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.

Page 14: Programozás II

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

}

Page 15: Programozás II

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";

}

}