برنامه نویسی پیشرفته جریان ها (streams)

Post on 19-Mar-2016

111 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

برنامه نویسی پیشرفته جریان ها (streams). رئوس مطالب. کلاس های جریانی خطاهای جریانی ورودی خروجی دیسک با جریان ها مکان نمای فایل خطایابی در ورودی/خروجی فایل ورودی/خروجی فایل در توابع عضو سربارگذاری عملگرهای درج و استخراج استفاده از حافظه به عنوان شی جریان. کلاس های جریانی. - PowerPoint PPT Presentation

TRANSCRIPT

برنامه نویسی پیشرفته(STREAMS)جریان ها

رئوس مطالبکالس های جریانیخطاهای جریانیورودی خروجی دیسک با جریان هامکان نمای فایلخطایابی در ورودی/خروجی فایلورودی/خروجی فایل در توابع عضوسربارگذاری عملگرهای درج و استخراجاستفاده از حافظه به عنوان شی جریان

2

کالس های جریانیجریان: دنباله ای از داده ها بین دو نقطه

ورودی/خروجی و برنامهفایل و برنامه

فایل ها نوعی جریان اند درC کار با فایلها با توابع خاصی انجام می شد در ،C++

خاصی انجام میشود.اشیاءبا استفاده از دانستن سلسله مراتب کالس های جریان مهم است

چون توابع به ارث برده میشوند.

3

سلسله مراتب کالسهای جریان

4

IOSکالس توابع عضو و داده های عضو این کالس توسط تمامی

کالس های جریانی به ارث برده میشود کالسios جد تمامی کالسهای جریانی است و حاوی

به آنها نیاز ++Cویژگیهای اصلی که در کار با جریانهای داریم. سه تا از مهمترین ویژگیها:

عالمتهای فورمت بندی بیتهای وضعیت خطا .وضع عملیات روی فایلهاست

5

IOSعالمتهای فورمت بندی این عالمتها مانند کلیدهای دو وضعیتی بصورت خاموش و

روشن عمل می کنند. چند روش مختلف برای مقداردهی به این عالمات وجود

دارد. از آنجائیکه این عالمات عضو کالسios هستند برای دسترسی

استفاده می شود.::به آنها از مقدار دهی به عالمات فورمت دهی

توسط توابع عضو کالسios یعنی setf و unsetf فعال و غیر فعال میشوند.

.با استفاده از دستکاری کننده ها به آنها مقدار داد

6

IOSعالمتهای فورمت بندی

7

دستکاری کننده ها ًدستکاری کنند ها : دستورات فورمت بندی که مستقیما

به جریان اضافه میشوند. را بعد از خود عناصری از جریان هستند که قالب جریان در

عوض میکنند. نمونه متداول آنهاendl تمامی عالمات فورمت بندی را میتوان از طریق دستکاری

کننده ها هم فعال یا غیر فعال کرد.

8

دستکاری کنند ها )ادامه(:دستکاری کننده ها به دو صورت متفاوت ظاهر میشوند

دستکاری کننده های بدون آرگومانی کننده هایی که یک آرگومان میگیرندZدستکار

cout << hex << var; Note that manipulators affect only the data that follows them

in the stream, not the data that precedes them.9

دستکاری کنند های تک آرگومانی بایستی سرفایلiomanip.به برنامه اضافه شود

10

IOSتوابع عضو کالس از این توابع عضو میتوان برای تنظیم عالمتهای فورمت

دهنده و کارهای دیگر استفاده کرد.

11

ISTREAM کالس جریانی که عملیات مخصوص ورودی یا خواندن داده

ها را انجام میدهد در و برخی صفحه کلید دارد هم درورودی از توابع عضوی

از فایل هم کاربرد دارد.ورودی

12

OSTREAMostream کالس جریانی که با عملیات خروجی سروکار :

دارد. ی توابع عضویZجی روZو صفحه نمایش دارد هم در خرو

روی فایل هم کاربرد دارد.در خروجی برخی

13

ورودی و خروجی روی فایل

14

اشیاء جریان از پیش تعریف شده

15

خطاها در جریان ها در هنگام ورودی/ خروجی از جریان ممکن است

خطاهایی رخ دهد. منتظرint.هستیم کاربر حرف وارد کند

بیت های کنترلی خاصی وجود دارد که وضعیت خطا رانشان میدهد

وضعیت این بیت ها را میتوان با استفاده از توابع عضوبررسی کرد یا تغییر داد.

: توابع عضو مهمeof)( ،نشاندهنده پایان جریان good)( برای پاک کردن )(clearنشاندهنده عدم خطا در جریان و

بیت خطا هستند.16

بررسی خطا در جریان ورودی مثال: ورودی از کاربر با استفاده ازcin.دریافت میشود

17

ورودی/خروجی از فایلبا استفاده از اشیاء سه کالس ifstream، ofstream و

fstream ،انجام میشود. به ترتیب برای خواندن از فایل نوشتن در فایل و انجام هر دو کار.

انواع فایلمتنی / باینری

مراحل انجام کار با فایل تعریف یک شی از نوع کالس جریانی مناسب و مشخص

کردن فایل مرتبط روی حافطه جانبیخواندن/نوشتن از طریق جریان بستن جریان

نقش مخرب18

برای فایل های متنیI/Oورودی و خZروجی ل ذکرZیر فایZت نام و مسZی اسZازنده کافZدر س

شود. برای خواندن از کالسifstream برای نوشتن از

ofstream .استفاده میشود عملگرهای از میتوان نوشتن و خواندن برای

استفاده کرد. << و >>مخرب، فایل را می بندد

19

رشته هایی با فاصله خالی میانی-)فایلهای متنی(

روش قبل برای رشته هایchar* که حاوی فاصله های خالی میانی هستند کار نمی کند.

برای کار با این رشته ها الزم است کاراکتر محدود کنندهخاصی را پس از هر رشته بنویسید و با استفاده از

getline)(.بجای عملگر ورودی آنها را بخوانید

20

فایلهای متنیدر هر خط فایل ورودی تعدادی عدد صحیح وجود دارد.

برنامه مجموع اعداد هر سطر را نشان میدهد.

21

2739

فایلهای باینری ل، باینری بودن فایلZیر فایZازنده عالوه بر نام و مسZدر س

در پارامتر دوم اعالم شود کالس از خواندن از ifstreamبرای نوشتن برای ofstream

استفاده میشود. عZن میتوان از توابZبرای خواندن و نوشتwrite و read استفاده

کرد.

Dataآدرس عنصری که قرار است خوانده/نوشته شود SIZEاندازه عنصر به بایت

22

فایل های باینری- مثالنوشتن آرایه در فایل و خواندن آن

23

نوشتن و خواندن یک شی با فایلهای بZاینری-مثال

.نوشتن شی در فایل و خواندن آنلزوم سازگاری موقع خواندن و نوشتن

24

فایلهای باینری-مثال نکته: اشیاء با عضو داده ای اشاره گر را نمیتوان

مستقیماً در فایل نوشت.چرا؟

25

FSTREAM اشیاءfstream هم میتوانند بعنوان ورودی و هم بعنوان

خروجی استفاده شوند. با تابع عضوopen تباط فایل را باز نموده و وضعیتZمیتوان ار

آن را تعریف نمود فایل میتواند چند و ضعیت داشته باشد که با همOR منطقی

میشوند.

26

مکان نمای فایZل مکان نمای فایل : محل فعلی خواندن و نوشتن از فایل

را مشخص میکند.دو مکان نما داریم : برای خواندن و برای نوشتن

مشخص را فایZل ابتدای از بایZت تعداد نمZا مکان مقدار میکند.

ر آنZا و تغییZع عضوی برای اطالع از مقدار مکان نمZتوابوجود دارد

tellp, getp, tellg, getg

27

مکان نمای فایل-مثال

28

خطا در فایل روش برخورد و تشخیص خطاها درistream و ostream

در اینجا هم کاربرد دارد )کالس پدر(

29

خطا در فایل

30

خواندن/نوشتن یZک شی در توابع عضو برای خواندن و نوشتن در فایل باید ازthisاستفاده کرد

31

خوانZدن/نوشتن همه اشیاء یک کالس در توابع عضو

میخواهیم بتوانیم کلیه اشیاء کالس را با یک فراخوانیload و saveکنیم

حداقل، نیاز به اعضایstaticداریم عضو های داده ایstatic تعداد اشیاء ساخته شده و آرایه ای :

از اشاره گر ها به آنها توابع داده ایstatic تابعی برای :save و تابعی برای load

32

مثال دفترچه تلفن

33

ذخیره چند نوع شی در یک فایل ء را هم ذخیرهZد شیZء، کZر شیZل از هZن، قبZع نوشتZموق

معلوم ذخیره شده نوع شی خواندن موقZع تZا میکنیZم باشد

34

ذخیره چند نوع شی در یک فایل حتی میتوان اشیاء یک سلسله مراتب توارثی را هم با

استفاده از چند ریختی ذخیره و بازیابی نمود. موقع خواندن محتویات فایل با خواندن قسمت کد نوع

، نوع شی بعد از آن را typeidشی و استفاده از عملگر متوجه میشویم.

35

کالس پایه

ذخیره اشیاء پایه و مشتق در یک فایل- ادامهکالس های مشتق

36

ذخیره اشیاء پایه و مشتق در یک فایل-ادامه تعریف توابعstaticدر کالس پایه

37

ذخیره اشیاء پایه و مشتق در یک فایل-ادامه توابعstaticخواندن و نوشتن در کالس پایه

38

ذخیره اشیاء پایه و مشتق در یک فایل-ادامهmainبرنامه

39

عملگرها باید بصورت تابعfriend سربارگذاری شوند چون عملگر در سمت چپ آنها قرار میگیرد.

خروجی عملگر ها بایدistream& یا ostream& .باشد قالب کلی برای <<

نوع ارجاع باشند.بایدبایدپارامترها و خروجی ها،

و << <<سربارگذاری عملگرهای

40

قالب کلی برای >>

و << <<سربارگذاری عملگرهای برای کار باcin و cout

41

و << <<سربارگذاری عملگرهای سربارگذاری برای کار باifstream و ofstream

سربارگذاریistream برای ifstreamهم کار میکند سربارگذاریostream برای ofstreamهم کار میکند

بخاطر چندریختی

42

استفاده از حافظه به عنوان شی جریاناز یک آرایه کاراکتری میتوان بعنوان جریان استفاده کرد

کالس Zمعموالً ازstrstream برای قالب بندی خروجی و ذخیره در یک رشته استفاده میشود.

strstream فرزند iostream.است قالب کلی

43

44

top related