1.4. Bufеrlashtirilgan kiritish va chiqarish. Buferlashtirilgan kiritish va chiqarish. C++ tilida ekran va faylga Iodan tashqari kiritish va chiqarish vazifalarini lokalizatsiyalash sifatida massivlardan foydalanadigan qator funksiyalarni qo‘llab-quvvatlaydi.Massivlarga asoslangan kiritish / chiqarish konseptual (array-basedI/O)echimga o‘xshasada, C tilining IO funksiyalari bilan anologdir(ayniqsa,sscanf() va sprintf() funksiyalari).Massivlar yordamida kiritish/chiqarishC++tilida juda moslashuvchan va foydalidir,chunki unda foydalanuvchi tomonidan yaratilgan o‘zgaruvchilarni kiritish va chiqarishda ham foydalaniladi. Massivlar bilan kiritish/chiqarishning barcha jihatlarini qamrab olish mumkin emas, ammo, eng muhim va tez tez ishlatiladigan xususiyatlari amalga oshirish mumkin.Massivlar yordamida Ioni amalga oshirish uchun ham oqimlarni talab qilishini tushunish muhimdir.Oldingi ko‘nikmalaringizdan C++da IO amalarini bilishingiz mumkin.Biroq,kiritish/chiqishda paramertlar sifatida ob’ektlardan foydalanishning barcha afzalliklari haqida dasturchilarning ko‘nikmalari muhimdir. Shuningdek,ma’lumot olish uchun,siz bir necha yangi xususiyatlarni boshqaradigan funksiyalar bilan tanishishingiz kerak.
Bu funksiyalar istalgan oqimni ma’lum xotira maydoniga bog‘lash uchun mo‘ljallangan. Bu amallar tugagandan so‘ng, barcha IO xusisiyatlari allaqachon dasturchi biladigan IO vazifalari yordamida amalga oshiriladi degan ko‘nikmaga olib keladi.Kiritish/chiqarish ob’ektlari sifatida massivdan foydalanishni boshlashdan oldin, kutubxonasini dasturingizga kiritilgan bo‘lishi kerak.Bu kutubxonadagi istrstream, ostrstream, va strstream sinflardan foydalanish mumkin. Bu sinflar, o‘z navbatida, kiritish,chiqish va kirish/chiqish uchun oqimlardan foydalanishga asoslangan. Ios sinfi bu sinflar uchun tayanch sinfdir, shuning uchun istream, ostream va iostream sinflarining barcha funksiyalari va manipulyatorlari istrstream,ostrstream va strstream sinflarida ham mavjud.Satr massivini chiqish uchun ostrstream sinf konstruktordan quyidagi asosiy shaklda foydalaniladi:
ostrstream chiqish_oqimi(char *bufer, streamsize
size, openmode mode = ios::out);
Misol:Massivgachiqarish.
#include "stdafx.h"
#include #include using namespace std;
int main(){
char buf[255]; // chiqarish uchun bufer
ostrstream ostr(buf, sizeof buf); // chiqarish
uchun massiv
ostr << "kirish/chiqish massiv oqimi bilan
ishlaydi.\n";
ostr << "oddiy kirish/chiqish kabi: \n " << 100;
ostr <<' ' << 123.23 <<'\n';
// manipulyatordan ham foydalanish mumkin
ostr << hex << 100 << ' ';
// identifikatordam ham
ostr.setf(ios::scientific);
ostr << 123.45 << ' ';
ostr << ends;
// oxirgi natijani chiqarish
cout << buf;
system("pause");
return 0;
}
Dastur natijasi: kirish/chiqish massiv oqimi bilan ishlaydi.
oddiy kirish/chiqish kabi:
100 123.2364 1.234500e+002
Misol:Massivga ma’lumotlarni kiritish.
#include "stdafx.h"
#include #include using namespace std;
int main(){
char buf[] = "SalomBuxoro 1980 28.01 B";
istrstream istr(buf);
char str[80]; float f; char c; int i;
istr >> str >> i >> f >> c;
cout << str << ' ' << i << ' ' << f << ' ' << c <<
'\n';
system("pause");
return 0;
}
Dastur natijasi:SalomBuxoro 1980 28.01 B
Laboratoriya mashg‘ulotini bajarish bo‘yicha variantlar:
1. Klavyatura va sichqoncha class larini yarating va ularni bog‘lovchi metodlar
yarating.
2. Kompyuter monitori va video kartasini class larini yarating va ularni
bog‘lovchi funksiyalar yarating.
3. Telefon va notebook class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
4. Universitet va kollej class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
5. Kollej va maktab class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
6. Piyola va choynak class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
7. Stol va stul class larini yarating va ularni bog‘lovchi funksiyalar yarating
8. Ruchka va qalam class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
9. Kastyum va shim class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
10.Kitob va daftar class larini yarating va ularni bog‘lovchi funksiyalar yarating
11.Eshik va deraza class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
12.Chelak va tog‘ora class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
13.Kalit va qulf class larini yarating va ularni bog‘lovchi funksiyalar yarating.
14.Svet va sham class larini yarating va ularni bog‘lovchi funksiyalar yarating.
15.Dom va hovli class larini yarating va ularni bog‘lovchi funksiyalar yarating.
16.Muzlatgich va mikrovalovka class larini yarating va ularni bog‘lovchi
funksiyalar yarating.
17.Printer va skanner class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
18.Mashina va motochikl class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
19.Ovqat va Ichimlik class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
20.Fleshka va disk class larini yarating va ularni bog‘lovchi funksiyalar yarating.
21.Tufli va tapichka class larini yarating va ularni bog‘lovchi funksiyalar
yarating.
22.Inson va hayvon class larini yarating va ularni bog‘lovchi funksiyalar
yarating.