logo

C++ dasturlash tilining fstream, exception,array kutubxonalari funksiyalari bilan ishlash

Загружено в:

08.08.2023

Скачано:

0

Размер:

763.1572265625 KB
Mavzu:  C++ dasturlash tilining fstream, exception,array kutubxonalari
funksiyalari bilan ishlash
Reja:
Kirish. 
1 bob  C++ dasturlash tilining bilan ishlash
1.1  fstream  kutubxonasi va uning funksiyalari
1.2  exception kutubxonasi va uning funksiyalari
1.3  array kutubxonasi va uning funksiyalari
II bob C++ dasturlash tili kutubxonalari funksiyalaridan foydalanib dasturlar
tuzish.
2.1.   C++ dasturlash tilining fstream kutubxonasi funksiyalaridan foydalanib 
dasturlar tuzish.
2.2 .  C++ dasturlash tilining excepiton kutubxonasi funksiyalaridan 
foydalanib dasturlar tuzish.
2.3 .  C++ dasturlash tilining array  kutubxonasi funksiyalaridan foydalanib 
dasturlar tuzish.
Xulosa
Foydalanilgan adabiyotlar Kirish.
C++   tilida   qiymatlarni   kiritish   chiqarish   uchun   C   tilidan   o‘tgan   stdio.h
kutubxonasidan   foydalaniladi.   Bu   kutubxonada   mavjud   funksiyalar
klaviatura,printer, terminal kabi qurilmalarni fayl oqimlari sifatida qabul
qiladi.   Oqim   –   buo‘zaro   bir   jinsli   sodir   bo‘luvchi   xususiyatga   ega
jarayondir.   Oqimlar   <cstdio>kutubxonasida   fayl   ko‘rsatgichlari   kabi
qayta   ishlanadi.   Fayl   ko‘rsatgichlari   –   bu   28   oqimda   unikal   aniqlanib,
bajariladigan amal uning parametri sifatida beriladi.Bukutubxonada 3 ta
standart oqim mavjud;   stdin,stdout   va   stderr   lar. Bu oqimlarkutubxona
chaqirilishi bilan avtomatik tarzda aniqlanadi [4,10].
Oqim   xususiyatlar   –   Oqimlar   bir   qator   xususiyatlarga   ega   ya‘ni   ularda
qanday   funksiyalardan   foydalanishmoqda   va   ular   orqali   ma‘lumotlarni
chiqarishqanday   amalga   oshirilmoqda.Oqimlarning   bunday
xususiyatlarining ko‘pchilig―fopen‖ funksiyasi bilan aniqlangan:
Ma’lumotlarni  o’qish   –  yozish   uchun  ruxsat:   Bu  holat   oqimdan  o‘qish
yoki fizik xotiraga ma‘lumotlarni yozish uchun qo‘llaniladi.
Matn/Binar:   Matnlar   oqimi   –   bu   har   biri   yakunlanuvchi   satr   deb
tushuniladi.   Matn   holati   satrlarni   o‘z   xarakteriga   ko‘ra   o‘qish   yozishni
amalga   oshiradi.   Binar   –   xarakterli   oqim   esa   fizik   xotiradan   o‘qish
yozishni to‘g‘ridan –to‘g‘ri amalga oshiradi.
Orientatsiya:   Faylni   ochishda   oqim   hech   qanday   orientatsiyaga   ega
bo‘lmaydi.   Bajarilayotgan   amalga   bog‘liq   ravishda   chiqariluvchi
miqdorlar   keng   formatli   bitlar   yoki   baytlar   ko‘rinishida   bo‘ladi. 1 bob C++ dasturlash tilining kutubxonalari bilan ishlash
C++ tili kutubxonasi xuddi C tili kutubxonasi kabi aniqlanadi. Tashkil
etilayotgan sarlavha fayli quyidagicha farqlarga ega:
- Har bir sarlavha fayli xuddi C tilidagi kabi o‘z nomiga ega ammo «C» oldi
qo‘shimchasiz va hech qanday kengaytmaga ega emas. Masalan, C tilidagi
<cstdlib> sarlavha fayli C++ tilida stdlib.h bilan ekvivalent;
- Kutubxonalarning har bir elementi std namespace nomlar fazosida
aniqlanadi;Ammo C tili bilan muvofiqlikni saqlash maqsadida sarlavha fayli 
―name.h ko‘rinishida bo‘ladi.‖
Bulardan tashqari C++ tilidagi o‘zgarishlar quyidagicha- wchar _t , char16_t, 
char32_t va bool turlari C++ tilining fundamental turlari hisoblanadi. Shuning 
uchun ham C da bular aniqlanmagan.Bulardan tashqari sarlavhada yana bir qancha 
kichik aniqlanishlar mavjud bo‘lib bulardan biri <iso 646.h> sarlavxa faylidir. U 
C++ tilining kalit so‘zlaridan biri hisoblanadi.
- Quyidagi funksiyalarning parametrlarida bir qator o‘zgarishlar mavjud:
strchr, strpbrk, strrchr, memchr, strstr - <cstdlib> sarlavxa faylida aniqlangan 
funksiyalarga C++ tilida qo‘shimchalar kiritilganligi kuzatiladi.
C++ tili versiyalarida ayrim funksiyalar mazmun jihatidan aniqlangan
parametrlarga qo‘shimcha turlarga ega masalan, float va lang double kabi. C++ 11
1990 yilda C tiliga qo‘shilgan. Bu jarayon xalqaro C tilini standartlashtirish
uyushmasida amalga oshirilgan. Ammo 2011 yildagi C tilining ISO standarti C++
tili bilan mos kelmaydi. C va C++ tilida mavjud kutubxonalar (Sarlavxa fayllari):
<cassert> (assert.h)-C tilining kutubxonasi
<cctype> (ctype.h)- funksiyalar bilan muloqot o‘rnatish kutubxonasi
<cerrno> (errno.h)- C tilida xatoliklar
<cfloat> (float.h)- Suzuvchi vergulli sonlar uchun maxsus turlar
<ciso646> (iso646.h) xalqaro standartlashtirish uyushmasi operatorlarni
to‘g‘ri yozilishi bo‘yicha 656 ta muqobil tekshiruvlarni amalga oshiruvchi
kutubxona hisoblanadi. 1.1  fstream  kutubxonasi va uning funksiyalari
  fstream   (qisqa   "FileStreamiçin"   ) dan bir header file   C ++ Standard kutubxonasi   / 
o'qish yozish uchun interfeysi beradi sinflar, usullari va vazifalari majmuini o'z 
ichiga oladi   ma'lumotlarni   bir dan /   fayl   .   Oqim   deb ataladigan   ob'ektlar   fayl 
ma'lumotlarini manipulyatsiya qilish uchun ishlatiladi   .
Ushbu faylga kiritilgan   funksiyalar   fayllardan   bayt bo'yicha   ham   , bloklarda   ham 
o'qish   va xuddi shu tarzda yozish imkonini beradi.   To'plam ma'lumotlar fayllariga 
kirish ketma-ketligini nazorat qilish uchun barcha kerakli funktsiyalarni, 
shuningdek, ko'plab yordamchi funktsiyalarni o'z ichiga oladi.
Asosiy sinflar   [   tahrir       |   kodni	 tahrirlash 	      ]
ios_base InputOutputStream_Base   ,	
 butun	 oqim	 sinfi	 ierarxiyasining	 asosiy	 klassi.   U	 umumiy	 
funktsiyalar,	
 turlar	 va	 sinflarni	 o'z	 ichiga	 oladi,	 asosan	 bayroqlarni	 (ko'rsatkichlarni)	 
ifodalaydi.   Ushbu	
 bayroqlar	 pastki	 sinf	 funktsiyalari	 tomonidan	 
qo'llaniladi   fstream va	
 funktsiyalar	 yordamida	 aniqlanishi	 mumkin   ios_base .
ios InputOutputStream   ,	
 asosiy	 pastki	 sinf,	 u bilan	 birga   ios_base oqim	 kutubxonasining
barcha	
 boshqa	 kichik	 sinflarini	 belgilaydi.   Formatlash	 va	 xatolarni	 qayta	 ishlash	 
bayroq	
 funktsiyalarini,	 shuningdek,	 dan	 meros	 bo'lib	 qolgan	 ba'zi	 funktsiyalarni	 o'z	 
ichiga	
 oladi   ios_base .
ifstream "InputFileStream"   ,	
 fayldan	 ma'lumotlarni	 o'qishni	 tashkil	 qiladi.   Funksiyalari	 fayllarni	 
o'qish	
 uchun	 ishlatiladigan	 sinf.
ofstream "OutputFileStream"   ,	
 faylga	 ma'lumotlarni	 yozishni	 tashkil	 qiladi.   Sinf	 faylga	 
ma'lumotlarni	
 yozish	 uchun	 ishlatiladi. Umumiy funktsiyalar  
Bular kutubxonaning asosiy funktsiyalari bo'lib, asosiy sinflarning hech biriga 
kiritilmagan.   Ular juda tez-tez ishlatiladi va har bir sinfdagi barcha ip ob'ektlariga 
qo'llanilishi mumkin.
 rdbuf ...   Barcha ob'ektlar   fstream  fayl bufer ob'ekti bilan bog'lanishi 
mumkin   filebuf .   Sinf   fstream  ob'ektini bufer ob'ektiga solishtirish uchun 
funktsiyadan foydalaning   rdbuf  (argumentlarsiz).   Bufer ob'ekti standart pastki 
sinf funktsiyalariga qaraganda fayldagi ma'lumotlar ustidan ko'proq nazoratni 
ta'minlaydi   fstream .
 open() ...   Ushbu usuldan foydalanib, ko'rsatilgan faylni oqim ob'ektlaridan biri 
bilan bog'lash orqali ochishingiz mumkin     .   O'tkazilgan   argumentlarga   qarab   , 
fayl o'qish, yozish uchun (to'liq yoki ma'lumot qo'shish uchun),   ikkilik   yoki 
matn fayli sifatida   ochilishi mumkin   .
 is_open() ...   Muayyan oqim ob'ekti bog'langan fayl hozirda ochiq yoki 
yo'qligini aniqlaydigan funksiya.   Boolean   qiymatni   qaytaradi   .   Asosan 
foydalanilayotgan faylni ochishga urinayotganda kirish xatolarining oldini olish
uchun foydalaniladi.   Hech qanday dalil yo'q.
 close() ...   Funktsiya faylni yopadi, ya'ni unga kirishni to'xtatadi va shu bilan uni
boshqa funktsiyalar yoki dasturlar uchun bo'shatadi.
Fstream header   bir fayl	 ma'lumotlarni	 o'qish	 va	 faylga	 yozish	 uchun	 vazifalar
beradi.   Umuman	
 olganda,	 u   konsol	 bilan	 ishlaydigan   iostream   sarlavhasiga
juda	
 o'xshaydi   ,	 chunki	 konsol	 ham	 fayldir.   Shuning	 uchun,	 barcha	 asosiy
operatsiyalar   iostream   bo'yicha   oldingi	
 mavzuda	 bo'lgani	 kabi,	 kichik	 farqlar
bilan	
 bir	 xil   .
Eng	
 keng	 tarqalgan	 operatsiyalar	 quyidagilar:
1.	
 I/U	 qayta	 yo'naltirish	 operatorlari	 -   <<   va   >>
2. Getline ()   va   get ()   c   put ()   satrlarini	
 yozish	 va	 o'qish	 usullari
3.   yozish   ()   va   o'qish   ()   usullaridan	
 foydalangan	 holda	 oqimli	 yozish	 va
o'qish  
4.	
 Fayllarni   ochish   /	 yaratish	 va	 yopish	 usullarini   ochish ()   va   yopish ()
5	
 Faylning   ochiqligini ()   va	 faylning	 oxiri   eof ()   ekanligini   tekshirish	 usullari  
6 >>   uchun	
 formatlangan	 chiqishni   kengligi ()   va   aniqligi ()   bilan   sozlash  
1. Joylashtirish operatsiyalari   tellg (), tellp ()   va   seekg (), seekp ()
Bu   fstream   kutubxonasi	
 taqdim   etadigan   barcha	 xususiyatlar	 emas   .     Biz
hozir	
 hamma	 narsani	 ko'rib	 chiqmaymiz,	 chunki	 ularni	 qo'llash	 doirasi	 juda
tor.   Keling,	
 yuqoridagilar	 bilan	 tanishamiz.   Keling,	 o'qish	 darsidan	 boshlaylik.
Ifstream klassi
Fayllarni	
 	o'qish	 	qobiliyatini	 	ta'minlaydi.   Faylni	 	ochishning	 	ikki	 	yo'li
mavjud:   open   ()   usulini	
 	chaqirish   yoki	 	konstruktorda	 	unga	 	yo'lni
ko'rsatish.   Kodni	
 yozishni	 boshlashdan	 oldin	 matn	 faylini	 tayyorlashingiz
kerak.   d	
 diskida	 1 nomli	 papka	 yarating	 va	 unda	 txt	 kengaytmali	 fayl	 yarating	 -
“file.txt”.
1
2
3
4
5
6
7
8
9 #include <iostream>
#include <fstream> //  подключаем   библиотеку
using namespace std;
 
int main()
{
 ifstream file; //  создаем   объект   класса  ifstream
 file.open("d:\\1\\ файл .txt"); //  открываем   файл
} 1.2   exception   kutubxonasi va uning funksiyalari
C++ standart kutubxonasi ob'ektlarni istisno sifatida e'lon qilish uchun maxsus 
ishlab chiqilgan asosiy sinfni taqdim etadi.   U 
deyiladi   std::exception va   <exception> sarlavhada   aniqlanadi   .   Bu sinfda   what nol 
bilan tugatilgan belgilar ketma-ketligini qaytaruvchi   virtual a'zo funksiyasi 
mavjud   (turdagi   char * ) va istisnoning qandaydir tavsifini o'z ichiga olishi uchun 
hosila sinflarda qayta yozilishi mumkin.
Istisnolar boshqaruvni   ishlov beruvchilar   deb ataladigan maxsus funktsiyalarga 
o'tkazish orqali dasturlardagi istisno holatlarga (masalan, ish vaqtidagi xatolar) 
munosabatda bo'lish usulini ta'minlaydi   .
Istisnolarni aniqlash uchun kodning bir qismi istisno tekshiruviga 
joylashtiriladi.   Bu kodning ushbu qismini   try-block ichiga qo'shish   orqali amalga 
oshiriladi   .   Ushbu blokda istisno holat yuzaga kelganda, boshqaruvni istisno 
ishlovchisiga o'tkazadigan istisno chiqariladi.   Hech qanday istisno bo'lmasa, kod 
odatdagidek davom etadi va barcha ishlov beruvchilar e'tiborga olinmaydi.
Istisno   blok   throw ichidan kalit so'z   yordamida chiqariladi   try .   Istisno 
ishlovchilar   blokdan   catch keyin darhol joylashtirilishi kerak   bo'lgan kalit so'z bilan
e'lon   qilinadi   try :
Istisno turiga qo'shimcha ravishda, C ++ turli vaziyatlarda ishlatilishi mumkin 
bo'lgan bir nechta olingan istisno turlariga ega.   Ulardan asosiylari:
runtime_error   : ish vaqtida tashlanadigan umumiy istisnolar turi
range_error   : Qabul qilingan natija diapazondan tashqarida bo'lganda 
chiqariladigan istisno
overflow_error   : Qabul qilingan natija diapazondan tashqarida bo'lsa, 
tashlanadigan istisno
underflow_error   : agar hisob-kitoblarda olingan natija noto'g'ri salbiy qiymatga 
ega bo'lsa (qiymatlarning pastki chegarasidan oshib ketgan) istisno qilinadi.
logic_error   : dastur kodida mantiqiy xatolar mavjud bo'lganda yuzaga keladigan 
istisno
domain_error   : funktsiyaga o'tkazilgan ba'zi bir qiymat uchun hech qanday natija 
aniqlanmaganda chiqariladigan istisno
invalid_argument   : funktsiyaga noto'g'ri argument uzatilganda chiqariladigan 
istisno length_error   : berilgan tur uchun ruxsat etilgan o lchamdan kattaroq ob yekt ʻ ʼ
yaratishga urinayotganda yuzaga keladigan istisno.
out_of_range   : diapazondan tashqaridagi elementlarga kirishga urinayotganda 
yuzaga keladigan istisno
Bu turdagi eng belgilanadi   stdexcept   header 
fayl   tashqari,   bad_alloc   sinf   belgilangan,   yangi   fayl   va   bad_cast   sinf   belgilangan,  
type_info   fayl   .
Istisno, bad_alloc va bad_cast sinflaridan farqli o'laroq, siz boshqa turdagi 
konstruktorlarga satrni o'tkazishingiz mumkin, ya'ni shu tarzda siz xato xabarini 
yuborishingiz mumkin.
try ... catch konstruksiyasi har xil turdagi istisnolarni boshqarish uchun bir nechta 
catch bloklaridan foydalanishi mumkin.   Istisno tashlanganida, istisno turini 
ishlatadigani uni boshqarish uchun tanlanadi.
Bir nechta ushlash bloklaridan foydalanganda, birinchi navbatda, aniqroq 
istisnolarni ko'rib chiqadigan tutqich bloklari joylashtiriladi va shundan keyingina 
ushlash bloklari umumiy istisnolar turlariga ega:
#include <iostream>
#include <exception>
#include <stdexcept>
double divide(int, int);
int main()
{<font></font>
        int x = 500;
        int y = 0;
        try
        {
                double z = divide(x, y);
                std::cout << z << std::endl;
        }
        catch (std::overflow_error err)
        {<font></font>
                std::cout << "Overflow_error: " << err.what() << 
std::endl;
        }
        catch (std::runtime_error err)
        {
                std::cout << "Runtime_error: " << err.what() <<  std::endl;
        }
        catch (std::exception err)
        {
                std::cout << "Exception!!!"<< std::endl;
        }
        std::cout << "The End..." << std::endl;
        return 0;
}
double divide(int a, int b)
{
        if (b == 0)
                throw std::runtime_error("Division by zero!");
        return a / b;
}
Bu erda bo'lish funktsiyasi, agar b parametri 0 bo'lsa,   runtime_error  
turidagi   istisnoni chiqaradi   .   Istisno "Nolga bo'linish!" Xato xabari bilan ishga 
tushiriladi.
Asosiy   funksiyada   try..catch   konstruksiyasi   uchta   catch   blokidan
foydalanadi.   Bundan   tashqari,   oxirgi   blok   istisnolarning   eng   umumiy   turini
ifodalaydi.   Ikkinchi   blok   istisnodan   olingan   runtime_error   turidagi   istisnolarni
boshqaradi.   Va   birinchi   blok   runtime_error   dan   kelib   chiqadigan   overflow_error
turidagi istisnolarni boshqaradi.
Bundan tashqari, barcha turdagi istisnolar   xato haqida ma'lumotni 
qaytaradigan   what ()   usuliga   ega.   Va bu holda, dastur quyidagi natijani beradi:
Runtime_error: nolga bo'linish! 1.3 Array kutubxonasi va funksiyalari
array kutubxonasi
Massivlar qat'iy o'lchamdagi ketma-ketlik konteynerlari: ular qat'iy chiziqli ketma-
ketlikda tartiblangan ma'lum miqdordagi elementlarni o'z ichiga oladi.
Ichkarida, massiv o'z ichiga olgan elementlardan boshqa hech qanday ma'lumotni
saqlamaydi  (hatto uning o'lchami  ham, kompilyatsiya vaqtida aniqlangan shablon
parametri).   Bu   til   qavs   sintaksisi   (   []   )   bilan   e'lon   qilingan   oddiy   massiv   kabi
saqlash   hajmi   jihatidan   samaralidir   .   Bu   sinf   unga   faqat   a'zolar   va   global
funktsiyalar   qatlamini   qo'shadi,   shuning   uchun   massivlar   standart   konteyner
sifatida   ishlatilishi   mumkin.
Boshqa  standart  konteynerlardan farqli   o'laroq, massivlar   qat'iy o'lchamga  ega  va
uning   elementlarini   taqsimlovchi   orqali   taqsimlamaydi:   ular   qat'iy   o'lchamdagi
elementlar massivini qamrab oluvchi agregat tipdir.   Shuning uchun ularni dinamik
ravishda   kengaytirish   yoki   qisqartirish   mumkin   emas   (qarangkengaytirilishi
mumkin bo'lgan shunga o'xshash konteyner uchun   vektor   ).
Nol   o lchamli   massivlar   to g ri,   lekin   ularga   havola   qilinmasligi   kerakʻ ʻ ʻ
(   old   ,   orqa   va   data   a zolari	
ʼ   ).
Standart   kutubxonadagi   boshqa   konteynerlardan   farqli   o'laroq,   ikkita   massiv
konteynerini   almashtirish   chiziqli   operatsiya   bo'lib,   diapazondagi   barcha
elementlarni alohida-alohida almashtirishni o'z ichiga oladi, bu odatda ancha kam
samarali   operatsiya   hisoblanadi.   Boshqa   tomondan,   bu   iteratorlarga   har   ikkala
konteynerdagi elementlarga asl konteyner assotsiatsiyasini  saqlab qolish imkonini
beradi.
Massiv   konteynerlarining   yana   bir   o'ziga   xos   xususiyati   shundaki,
ular   kortejli   ob'ektlar   sifatida   ko'rib   chiqilishi   mumkin   :   <massiv>   sarlavhasi   get-
ni   haddan   tashqari   yuklaydi.massiv   elementlariga   xuddi   tuple   kabi   kirish
funksiyasi   ,   shuningdek   ixtisoslashtirilgan   tuple_size   va   tuple_element   turlari.
Konteyner xususiyatlari
Ketma-ketlik
Ketma-ket konteynerlardagi elementlar qat'iy chiziqli ketma-ketlikda 
tartibga solinadi.   Alohida elementlarga ushbu ketma-ketlikdagi joylashuviga
qarab kirish mumkin.
Qo'shni saqlash
Elementlar doimiy ravishda elementlarga tasodifiy kirish imkonini beruvchi 
qo'shni xotira joylarida saqlanadi.   Elementga ko'rsatgichlar boshqa 
elementlarga kirish uchun ofset bo'lishi mumkin. Ruxsat etilgan o'lchamdagi agregat
Konteyner kerakli joyni statik ravishda ajratish uchun yashirin 
konstruktorlar va destruktorlardan foydalanadi.   Uning o'lchami 
kompilyatsiya vaqti doimiysi.  
Array kutubxonasi funksiyalari. II bob C++ dasturlash tili kutubxonalari funksiyalaridan foydalanib dasturlar
tuzish.
C   ++   da   standart   kutubxona   std   nom   maydoniga   o'ralgan   va   dasturchi   bu   nom   maydoni   ichida   biror
narsani   aniqlamaydi.   Albatta,   standartlar   fayllarni   standart   kutubxonada   bir-biriga   nomlashmaydi
(shuning uchun hech qachon standart nomni kiritish uchun muammo yo'q).
Ba'zida dasturchiga standart nomni kiritishni unutib qo'yadi, biroq dastur o'zgacha
dasturning o'ziga qaramligini o'z ichiga oladi. Dasturni boshqa muhitga (yoki bitta
derivatning   yana   bir   versiyasiga)   ko'chirsangiz,   bir   xil   manba   kodini   tuzish
to'xtatilishi mumkin.
Texnik   jihatdan   standart   kutubxona   uchun   optimallashtirilgan   hash   belgilar
jadvalini   (   mmap   )   oldindan   o'rnatish   uchun   derazani   tasvirlay   olaman.   Buni
tezda   bajarish   va   C   ++   dasturini   hatto   bitta   standartni   o'z   ichiga   olgan   faylni
qo'shish   va   bajarishdan   iborat   bo'lishi   kerak   va   std   ::   nomlari   uchun   tezkor
qidiruvni   taqdim   etishi   kerak.   Ushbu   ma'lumotlar   shuningdek,   faqat   o'qiladi
(shuning   uchun   ehtimol   kichikroq   ko'rinishda   va   kompilyatorning   bir   nechta
misollari orasida almashinishi mumkin).
Faqatgina   asosiy   afzalliklarini   aniqlash   uchun   faqatgina   C   ++   standart
kutubxonasiga   bitta   monolitik   nom   maydoni   bo'lishiga   qaramasdan,   dasturchilar
uchun bugungi kunda qaysi dastur/sinf qaysi qaysi kichik qism (o'z ichiga faylni) .
Xatolik yuzaga kelganda jarohatlanish uchun haqoratni qo'shish va qo'shib qo'yish
faylini   unutib   qo'yish   uchun   kod   ijro   etilishiga   qarab   (yoki   portativ   bo'lmagan
dasturlarga olib keladigan) kompilyatsiya yoki tuzilishi mumkin. 2.1.  C++ dasturlash tilining fstream kutubxonasi funksiyalaridan
foydalanib dasturlar tuzish.
open ()   usulini chaqirish   yoki	 konstruktorda	 unga	 yo'lni	 ko'rsatish.   Kodni	 
yozishni	
 boshlashdan	 oldin	 matn	 faylini	 tayyorlashingiz	 kerak.   d	 diskida	 1 
nomli	
 papka	 yarating	 va	 unda	 txt	 kengaytmali	 fayl	 yarating	 - “file.txt”.
is_open ()   usuli	
 yordamida	 tekshirishning	 ikkinchi	 varianti     :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <iostream>
#include <fstream> 
using namespace std;
 
int main()
{
 setlocale(LC_ALL, "rus");
 
 ifstream file ("d:\\1\\ файл .txt");
 
 if (file.is_open()) //  вызов   метода  is_open()
  cout << "Все ОК! Файл открыт!\n\n" << endl;
 else 
 {
 cout << "Файл не открыт!\n\n" << endl;
 return -1; 16
17
18  }
}
Agar fayl	 topilsa	 va	 muvaffaqiyatli   ochilsa,   is_open   ()   usuli     1	 ni
qaytaradi.   Aks	
 holda,	 u 0 ni	 qaytaradi	 va   else   blokida	 yozilgan	 kod	 ishlaydi   .
  #include <iostream.h> 
  #include <fstream>   
  using namespace std;        
  int main()                                    
  {        
      ofstream f;  // faylga ma lumotni yozish uchun e lon qilish    	
‟ ‟
      ifstream g;  // fayldan ma lumot o„qish uchun e lon qilish    
‟ ‟
  f.close();     // f fayl yopildi    
  g.close();    // g fayl yopildi 
  return 0;    
  }     2.2.  C++ dasturlash tilining excepiton kutubxonasi funksiyalaridan
foydalanib dasturlar tuzish.\
C++ standart kutubxonasi ob'ektlarni istisno sifatida e'lon qilish uchun maxsus 
ishlab chiqilgan asosiy sinfni taqdim etadi.   U 
deyiladi   std::exception va   <exception> sarlavhada   aniqlanadi   .   Bu sinfda   what nol 
bilan tugatilgan belgilar ketma-ketligini qaytaruvchi   virtual a'zo funksiyasi 
mavjud   (turdagi   char * ) va istisnoning qandaydir tavsifini o'z ichiga olishi uchun 
hosila sinflarda qayta yozilishi mumkin.
// using standard exceptions
#include <iostream>
#include <exception>
using   namespace  std;
class  myexception:  public  exception
{
   virtual   const   char * what()  const   throw ()
  {
     return   "My exception happened" ;
  }
} myex;
int  main () {
   try
  {
     throw  myex;
  }
   catch  (exception& e)
  {
    cout << e.what() <<  '\n' ;
   }
   return  0;
} #include <stdexcept>
#include <limits>
#include <iostream>
using namespace std;
void MyFunc(int c)
{
    if (c > numeric_limits< char> ::max())
        throw invalid_argument("MyFunc argument too large.");
    //...
}
int main()
{
    try
    {
        MyFunc(256); //cause an exception to throw
    }
    catch (invalid_argument& e)
    {         cerr << e.what() << endl;
        return -1;
    }
    //...
    return 0;
}
#include <iostream>
#include <exception>
#include <stdexcept>
double divide(int, int);
int main()
{<font></font>
        int x = 500;
        int y = 0;
        try
        {
                double z = divide(x, y);
                std::cout << z << std::endl;
        }
        catch (std::overflow_error err)
        {<font></font>                 std::cout << "Overflow_error: " << err.what() << std::endl;
        }
        catch (std::runtime_error err)
        {
                std::cout << "Runtime_error: " << err.what() << std::endl;
        }
        catch (std::exception err)
        {
                std::cout << "Exception!!!"<< std::endl;
        }
        std::cout << "The End..." << std::endl;
        return 0;
}
double divide(int a, int b)
{
        if (b == 0)
                throw std::runtime_error("Division by zero!");
        return a / b;
} 2.3 C++ dasturlash tilida array kutubxonasi funksiyalaridan foydalanib
dastur tuzish
<massiv> sarlavhasi massiv ob'ektlarida ishlaydigan ikkita a'zo bo'lmagan 
funktsiyalarni o'z ichiga oladi: get va swap.
Get
Massivning belgilangan elementiga havolani qaytaradi.
template <int Index, class T, size_t N>
constexpr T& get(array<T, N>& arr) noexcept;
template <int Index, class T, size_t N>
constexpr const T& get(const array<T, N>& arr) noexcept;
template <int Index, class T, size_t N>
constexpr T&& get(array<T, N>&& arr) noexcept;
Parametrlar
Indeks
Element ofset.
T
Elementning turi.
N
Massivdagi elementlar soni.
arr
Tanlash uchun massiv.
Misol
#include <array>
#include <iostream>
using namespace std; typedef array<int, 4> MyArray;
int main()
{
    MyArray c0 { 0, 1, 2, 3 };
    // display contents " 0 1 2 3"
    for (const auto& e : c0)
    {
        cout << " " << e;
    }
    cout << endl;
    // display odd elements " 1 3"
    cout << " " << get<1>(c0);
    cout << " " << get<3>(c0) << endl;
} swap
Ikki massiv ob'ektini almashtiradigan std::swapning a'zo bo'lmagan shablon 
ixtisoslashuvi
Parametrlar
Ty
Elementning turi.
N
Massivning o'lchami.
chap
Almashtiriladigan birinchi massiv.
to'g'ri
Almashtirish uchun ikkinchi massiv.
Izohlar
Shablon funksiyasi left.swap(o'ng) ni bajaradi.
// std__array__swap.cpp
// compile with: /EHsc
#include <array>
#include <iostream>
typedef std::array<int, 4> Myarray;
int main()
{
    Myarray c0 = { 0, 1, 2, 3 };
    // display contents " 0 1 2 3"
    for (Myarray::const_iterator it = c0.begin();
        it != c0.end(); ++it)
        std::cout << " " << *it;     std::cout << std::endl;
    Myarray c1 = { 4, 5, 6, 7 };
    c0.swap(c1);
    // display swapped contents " 4 5 6 7"
    for (Myarray::const_iterator it = c0.begin();
        it != c0.end(); ++it)
        std::cout << " " << *it;
    std::cout << std::endl;
    swap(c0, c1);
    // display swapped contents " 0 1 2 3"
    for (Myarray::const_iterator it = c0.begin();
        it != c0.end(); ++it)
        std::cout << " " << *it;
    std::cout << std::endl
    return (0);
} Xulosa. 
Biz   ushbu   kurs   ishimiz   mobaynida   valarray   ,   memory   va   array   kabi
kutubxonalarning funksiyalari bilan ishlashni  ko’rib chiqdik va ular bilan turli hil
misollarni ko’rib chiqdik.
valarray   kutubxonasining   asosiy   vazifasi   bu   massivlar   ustida   amllar   bajarish
hisoblanadi   va   u   dasturda     #include   <valarray>   kabi   chaqiriladi     va   undan
foydalanish mumkin bo’ladi.
Sstream kutubxonasining asosiy vazifasi bu satrlar va ular bilan ishlovchi va qayta
ishlovchi   kutuvxona   hisoblanadi   va   u   dasturda     #include   <memory>   kabi
chaqiriladi  va undan foydalanish mumkin bo’ladi.
biteset   kutubxonasining   asosiy   vazifasi   ruxsat   etilgan   o lchamdagi   bitlar   ketma-ʻ
ketligini ko rsatish va boshqarish uchun sinf shablonlari bit setini va ikkita qo llab-	
ʻ ʻ
quvvatlovchi   shablon   funksiyasini   belgilaydigan   kutuvxona   hisoblanadi   va   u
dasturda   #include <array>  kabi chaqiriladi  va undan foydalanish mumkin bo’ladi. Foydalanilgan adabiyotlar:
1.   S.   G.   Akl.   Parallel   Sorting   Algorithms.   Academic   Press,   Orlando,   FL,
1985.
2.S. G. Akl. The Design and Analysis of Parallel Algorithms. Prentice Hall,
Englewood Cliffs, NJ, 1989.
3.S.   G.   Akl.   Parallel   Computation:   Models   and   Methods.   Prentice   Hall,
Englewood Cliffs, NJ, 1997.
4.S.   G.   Akl   and   K.   A.   Lyons.   Parallel   Computational   Geometry.   Prentice
Hall, Englewood Cliffs, NJ, 1993
Internet saytlari
https://docs.microsoft.com/en-us/cpp/standard-library/sstream-functions?
view=msvc-170

Mavzu: C++ dasturlash tilining fstream, exception,array kutubxonalari funksiyalari bilan ishlash Reja: Kirish. 1 bob C++ dasturlash tilining bilan ishlash 1.1 fstream kutubxonasi va uning funksiyalari 1.2 exception kutubxonasi va uning funksiyalari 1.3 array kutubxonasi va uning funksiyalari II bob C++ dasturlash tili kutubxonalari funksiyalaridan foydalanib dasturlar tuzish. 2.1. C++ dasturlash tilining fstream kutubxonasi funksiyalaridan foydalanib dasturlar tuzish. 2.2 . C++ dasturlash tilining excepiton kutubxonasi funksiyalaridan foydalanib dasturlar tuzish. 2.3 . C++ dasturlash tilining array kutubxonasi funksiyalaridan foydalanib dasturlar tuzish. Xulosa Foydalanilgan adabiyotlar

Kirish. C++ tilida qiymatlarni kiritish chiqarish uchun C tilidan o‘tgan stdio.h kutubxonasidan foydalaniladi. Bu kutubxonada mavjud funksiyalar klaviatura,printer, terminal kabi qurilmalarni fayl oqimlari sifatida qabul qiladi. Oqim – buo‘zaro bir jinsli sodir bo‘luvchi xususiyatga ega jarayondir. Oqimlar <cstdio>kutubxonasida fayl ko‘rsatgichlari kabi qayta ishlanadi. Fayl ko‘rsatgichlari – bu 28 oqimda unikal aniqlanib, bajariladigan amal uning parametri sifatida beriladi.Bukutubxonada 3 ta standart oqim mavjud; stdin,stdout va stderr lar. Bu oqimlarkutubxona chaqirilishi bilan avtomatik tarzda aniqlanadi [4,10]. Oqim xususiyatlar – Oqimlar bir qator xususiyatlarga ega ya‘ni ularda qanday funksiyalardan foydalanishmoqda va ular orqali ma‘lumotlarni chiqarishqanday amalga oshirilmoqda.Oqimlarning bunday xususiyatlarining ko‘pchilig―fopen‖ funksiyasi bilan aniqlangan: Ma’lumotlarni o’qish – yozish uchun ruxsat: Bu holat oqimdan o‘qish yoki fizik xotiraga ma‘lumotlarni yozish uchun qo‘llaniladi. Matn/Binar: Matnlar oqimi – bu har biri yakunlanuvchi satr deb tushuniladi. Matn holati satrlarni o‘z xarakteriga ko‘ra o‘qish yozishni amalga oshiradi. Binar – xarakterli oqim esa fizik xotiradan o‘qish yozishni to‘g‘ridan –to‘g‘ri amalga oshiradi. Orientatsiya: Faylni ochishda oqim hech qanday orientatsiyaga ega bo‘lmaydi. Bajarilayotgan amalga bog‘liq ravishda chiqariluvchi miqdorlar keng formatli bitlar yoki baytlar ko‘rinishida bo‘ladi.

1 bob C++ dasturlash tilining kutubxonalari bilan ishlash C++ tili kutubxonasi xuddi C tili kutubxonasi kabi aniqlanadi. Tashkil etilayotgan sarlavha fayli quyidagicha farqlarga ega: - Har bir sarlavha fayli xuddi C tilidagi kabi o‘z nomiga ega ammo «C» oldi qo‘shimchasiz va hech qanday kengaytmaga ega emas. Masalan, C tilidagi <cstdlib> sarlavha fayli C++ tilida stdlib.h bilan ekvivalent; - Kutubxonalarning har bir elementi std namespace nomlar fazosida aniqlanadi;Ammo C tili bilan muvofiqlikni saqlash maqsadida sarlavha fayli ―name.h ko‘rinishida bo‘ladi.‖ Bulardan tashqari C++ tilidagi o‘zgarishlar quyidagicha- wchar _t , char16_t, char32_t va bool turlari C++ tilining fundamental turlari hisoblanadi. Shuning uchun ham C da bular aniqlanmagan.Bulardan tashqari sarlavhada yana bir qancha kichik aniqlanishlar mavjud bo‘lib bulardan biri <iso 646.h> sarlavxa faylidir. U C++ tilining kalit so‘zlaridan biri hisoblanadi. - Quyidagi funksiyalarning parametrlarida bir qator o‘zgarishlar mavjud: strchr, strpbrk, strrchr, memchr, strstr - <cstdlib> sarlavxa faylida aniqlangan funksiyalarga C++ tilida qo‘shimchalar kiritilganligi kuzatiladi. C++ tili versiyalarida ayrim funksiyalar mazmun jihatidan aniqlangan parametrlarga qo‘shimcha turlarga ega masalan, float va lang double kabi. C++ 11 1990 yilda C tiliga qo‘shilgan. Bu jarayon xalqaro C tilini standartlashtirish uyushmasida amalga oshirilgan. Ammo 2011 yildagi C tilining ISO standarti C++ tili bilan mos kelmaydi. C va C++ tilida mavjud kutubxonalar (Sarlavxa fayllari): <cassert> (assert.h)-C tilining kutubxonasi <cctype> (ctype.h)- funksiyalar bilan muloqot o‘rnatish kutubxonasi <cerrno> (errno.h)- C tilida xatoliklar <cfloat> (float.h)- Suzuvchi vergulli sonlar uchun maxsus turlar <ciso646> (iso646.h) xalqaro standartlashtirish uyushmasi operatorlarni to‘g‘ri yozilishi bo‘yicha 656 ta muqobil tekshiruvlarni amalga oshiruvchi kutubxona hisoblanadi.

1.1 fstream kutubxonasi va uning funksiyalari fstream (qisqa "FileStreamiçin" ) dan bir header file C ++ Standard kutubxonasi / o'qish yozish uchun interfeysi beradi sinflar, usullari va vazifalari majmuini o'z ichiga oladi ma'lumotlarni bir dan / fayl . Oqim deb ataladigan ob'ektlar fayl ma'lumotlarini manipulyatsiya qilish uchun ishlatiladi . Ushbu faylga kiritilgan funksiyalar fayllardan bayt bo'yicha ham , bloklarda ham o'qish va xuddi shu tarzda yozish imkonini beradi. To'plam ma'lumotlar fayllariga kirish ketma-ketligini nazorat qilish uchun barcha kerakli funktsiyalarni, shuningdek, ko'plab yordamchi funktsiyalarni o'z ichiga oladi. Asosiy sinflar [   tahrir       |   kodni  tahrirlash        ] ios_base InputOutputStream_Base   ,  butun  oqim  sinfi  ierarxiyasining  asosiy  klassi.   U  umumiy   funktsiyalar,  turlar  va  sinflarni  o'z  ichiga  oladi,  asosan  bayroqlarni  (ko'rsatkichlarni)   ifodalaydi.   Ushbu  bayroqlar  pastki  sinf  funktsiyalari  tomonidan   qo'llaniladi   fstream va  funktsiyalar  yordamida  aniqlanishi  mumkin   ios_base . ios InputOutputStream   ,  asosiy  pastki  sinf,  u bilan  birga   ios_base oqim  kutubxonasining barcha  boshqa  kichik  sinflarini  belgilaydi.   Formatlash  va  xatolarni  qayta  ishlash   bayroq  funktsiyalarini,  shuningdek,  dan  meros  bo'lib  qolgan  ba'zi  funktsiyalarni  o'z   ichiga  oladi   ios_base . ifstream "InputFileStream"   ,  fayldan  ma'lumotlarni  o'qishni  tashkil  qiladi.   Funksiyalari  fayllarni   o'qish  uchun  ishlatiladigan  sinf. ofstream "OutputFileStream"   ,  faylga  ma'lumotlarni  yozishni  tashkil  qiladi.   Sinf  faylga   ma'lumotlarni  yozish  uchun  ishlatiladi.

Umumiy funktsiyalar Bular kutubxonaning asosiy funktsiyalari bo'lib, asosiy sinflarning hech biriga kiritilmagan. Ular juda tez-tez ishlatiladi va har bir sinfdagi barcha ip ob'ektlariga qo'llanilishi mumkin.  rdbuf ... Barcha ob'ektlar fstream fayl bufer ob'ekti bilan bog'lanishi mumkin filebuf . Sinf fstream ob'ektini bufer ob'ektiga solishtirish uchun funktsiyadan foydalaning rdbuf (argumentlarsiz). Bufer ob'ekti standart pastki sinf funktsiyalariga qaraganda fayldagi ma'lumotlar ustidan ko'proq nazoratni ta'minlaydi fstream .  open() ... Ushbu usuldan foydalanib, ko'rsatilgan faylni oqim ob'ektlaridan biri bilan bog'lash orqali ochishingiz mumkin . O'tkazilgan argumentlarga qarab , fayl o'qish, yozish uchun (to'liq yoki ma'lumot qo'shish uchun), ikkilik yoki matn fayli sifatida ochilishi mumkin .  is_open() ... Muayyan oqim ob'ekti bog'langan fayl hozirda ochiq yoki yo'qligini aniqlaydigan funksiya. Boolean qiymatni qaytaradi . Asosan foydalanilayotgan faylni ochishga urinayotganda kirish xatolarining oldini olish uchun foydalaniladi. Hech qanday dalil yo'q.  close() ... Funktsiya faylni yopadi, ya'ni unga kirishni to'xtatadi va shu bilan uni boshqa funktsiyalar yoki dasturlar uchun bo'shatadi. Fstream header bir fayl  ma'lumotlarni  o'qish  va  faylga  yozish  uchun  vazifalar beradi.   Umuman  olganda,  u   konsol  bilan  ishlaydigan   iostream   sarlavhasiga juda  o'xshaydi   ,  chunki  konsol  ham  fayldir.   Shuning  uchun,  barcha  asosiy operatsiyalar   iostream bo'yicha   oldingi  mavzuda  bo'lgani  kabi,  kichik  farqlar bilan  bir  xil   . Eng  keng  tarqalgan  operatsiyalar  quyidagilar: 1.  I/U  qayta  yo'naltirish  operatorlari  -   <<   va   >> 2. Getline ()   va   get ()   c   put ()   satrlarini  yozish  va  o'qish  usullari 3. yozish ()   va   o'qish ()   usullaridan  foydalangan  holda  oqimli  yozish  va o'qish   4.  Fayllarni   ochish   /  yaratish  va  yopish  usullarini   ochish ()   va   yopish () 5  Faylning   ochiqligini ()   va  faylning  oxiri   eof ()   ekanligini   tekshirish  usullari   6 >>   uchun  formatlangan  chiqishni   kengligi ()   va   aniqligi ()   bilan   sozlash