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

Programozás II.

Jan 14, 2016

Download

Documents

Wanda

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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";

}

}