|
Bufеrlashtirilgan kiritish va chiqarishBog'liq Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari u1.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
|
| |