cout
C++ cout obyekti
Misol
Turli ma’lumot tiplarini chiqarish uchun cout obyektidan foydalaning:
string myStr = "Hello World!";
bool myBool = false;
int myInt = 50;
float myFloat = 19.99;
cout << myStr << "\n";
cout << myBool << "\n";
cout << myInt << "\n";
cout << myFloat << "\n";
Ta’rif va qo‘llanilishi
cout obyekti qiymatlarni chiqarish/matnni chop etish uchun ishlatiladi.
cout obyektidan foydalanishning eng keng tarqalgan usuli — uni << joylash (insertion) operatori bilan ishlatish. Joylash operatori o‘zgaruvchi yoki literal qiymatni qanday ifodalashni uning ma’lumot tipiga qarab hal qiladi.
cout << "Hello World!";
Bir nechta qiymatni chiqarish uchun joylash operatoridan bitta qatorda bir necha marta foydalanish mumkin:
cout << "The answer is: " << x;
Eslatma: cout obyekti <iostream> sarlavha faylida aniqlangan.
Manipulyatorlar
Manipulyatorlar chiqariladigan natijaning formatini o‘zgartirish imkonini beradi. Ular << joylash operatori bilan literal qiymatlar va o‘zgaruvchilar kabi ishlatiladi hamda o‘zidan keyin keladigan natijaga ta’sir qiladi.
setw() manipulyatoridan tashqari, manipulyatorning ta’siri uni boshqa manipulyator o‘zgartirmaguncha saqlanib qoladi.
Quyidagi jadvalda foydali manipulyatorlar ro‘yxati keltirilgan:
| Manipulyator | Tavsif | Misol |
|---|---|---|
boolalpha |
Boolean qiymatlarni "1" va "0" o‘rniga "true" va "false" ko‘rinishida ko‘rsatadi. | cout << boolalpha << false; |
dec |
Butun sonlarni o‘nlik raqamlar bilan ifodalaydi. | cout << dec << 12; |
endl |
Yangi qator belgisini chiqaradi. Bu manipulyator chiqish buferini ham bo‘shatadi (flush), shu sababli u \n belgisini chop etishga qaraganda kamroq samarali. |
cout << "Line 1" << endl << "Line 2"; |
ends |
C uslubidagi stringlarni yakunlash uchun ishlatiladigan null belgisini chiqaradi. Asosan fayllarga yozishda ishlatiladi. | cout << "Hello World!" << ends; |
fixed |
Suzuvchi nuqtali sonlarni kasr qismidagi raqamlar soni qat’iy belgilangan holda ifodalaydi. Kasr qismidagi raqamlar sonini setprecision() manipulyatori yordamida belgilash mumkin. |
cout << fixed << 19.99; |
hex |
Butun sonlarni o‘n oltilik raqamlar bilan ifodalaydi. | cout << hex << 12; |
internal |
Agar kenglik belgilangan bo‘lsa (setw() manipulyatori yordamida), sonlarning ishorasi chapga, qiymati esa o‘ngga tekislanadi, boshqa ma’lumot tiplarida esa natija o‘ngga tekislanadi. |
cout << setw(10) << internal << -12345; |
left |
Agar kenglik belgilangan bo‘lsa (setw() manipulyatori yordamida), natijani chapga tekislaydi. |
cout << setw(10) << left << "Hello"; |
noboolalpha |
boolalpha manipulyatori kiritgan o‘zgarishni bekor qilish uchun ishlatiladi. |
cout << noboolalpha << false; |
noshowbase |
showbase manipulyatori kiritgan o‘zgarishni bekor qilish uchun ishlatiladi. |
cout << hex << noshowbase << 12; |
noshowpoint |
showpoint manipulyatori kiritgan o‘zgarishni bekor qilish uchun ishlatiladi. |
cout << noshowpoint << 12345.0; |
noshowpos |
showpos manipulyatori kiritgan o‘zgarishni bekor qilish uchun ishlatiladi. |
cout << noshowpos << 12; |
nouppercase |
uppercase manipulyatori kiritgan o‘zgarishni bekor qilish uchun ishlatiladi. |
cout << hex << nouppercase << 12; |
oct |
Butun sonlarni sakkizlik raqamlar bilan ifodalaydi. | cout << oct << 12; |
right |
Agar kenglik belgilangan bo‘lsa (setw() manipulyatori yordamida), natijani o‘ngga tekislaydi. |
cout << setw(10) << right << "Hello"; |
fixed |
Suzuvchi nuqtali sonlarni ilmiy yozuvda ifodalaydi. Kasr qismidagi raqamlar sonini setprecision() manipulyatori yordamida belgilash mumkin. |
cout << fixed << 19.99; |
setfill() |
To‘ldiruvchi sifatida ishlatiladigan belgini tanlaydi. <iomanip> kutubxonasi kerak bo‘ladi. |
cout << setfill('.') << setw(10) << 19.99; |
setprecision() |
Suzuvchi nuqtali sonlarning aniqligini tanlaydi. Agar fixed yoki scientific manipulyatorlari ishlatilgan bo‘lsa, u kasr qismidagi raqamlar sonini, aks holda qiymatli raqamlar sonini belgilaydi. <iomanip> kutubxonasi kerak bo‘ladi. |
cout << setprecision(4) << 12.3456; |
setw() |
Keyingi chiqariladigan natijaning belgilarda o‘lchanadigan eng kam kengligini belgilaydi. Agar natija yetarlicha keng bo‘lmasa, qolgan joyni to‘ldirish uchun to‘ldiruvchi belgilar qo‘shiladi. <iomanip> kutubxonasi kerak bo‘ladi. |
cout << setw(10) << "Hello"; |
showbase |
Butun sonlarni o‘n oltilik yoki sakkizlik ko‘rinishda ifodalashda sanoq sistemasini ko‘rsatish uchun sonlar oldiga "0x" yoki "0" qo‘yadi. | cout << hex << showbase << 12; |
showpoint |
Suzuvchi nuqtali sonlarda o‘nlik nuqtani, hatto u kerak bo‘lmasa ham, har doim ko‘rsatadi. | cout << showpoint << 12345.0; |
showpos |
Musbat sonlar yonida har doim + belgisini ko‘rsatadi. | cout << showpos << 12; |
uppercase |
O‘n oltilik raqamlarni va ilmiy yozuvdagi "e" harfini katta harfda ifodalaydi. | cout << hex << uppercase << 12; |
Misol
Natija qanday formatlanishini o‘zgartirish uchun manipulyatorlardan foydalaning:
// Booleans
cout << "Booleans\n";
cout << false << "\n";
cout << boolalpha << false << "\n";
// Hexadecimal and octal numbers
cout << "\nHexadecimal and octal numbers\n";
int myInt = 14;
cout << dec << myInt << "\n";
cout << hex << myInt << "\n";
cout << oct << myInt << "\n";
cout << showbase << uppercase;
cout << hex << myInt << "\n";
cout << oct << myInt << "\n";
cout << dec;
// Floating point numbers
cout << "\nFloating point numbers\n";
float myFloat = 19.99;
cout << myFloat << "\n";
cout << showpos << showpoint << 12345.0 << "\n";
cout << noshowpos << noshowpoint;
cout << fixed << myFloat << "\n";
cout << scientific << myFloat << "\n";
// Alignment
cout << "\nAlignment\n";
cout << setw(10) << left << "Left" << "\n";
cout << setw(10) << right << "Right" << "\n";
cout << setw(10) << internal << -12345 << " (Internal)\n";
Metodlar
cout obyektida << joylash operatori bajaradigan amallarni bajara oladigan metodlar ham bor.
Chiqarish metodlari
cout.write(str, n) metodi char tipidagi str massividan dastlabki n ta belgini hech qanday formatlashsiz chiqaradi.
cout.put(c) metodi ko‘rsatilgan c belgisini hech qanday formatlashsiz chiqaradi.
Formatlash metodlari
cout.precision(p) metodi suzuvchi nuqtali sonlarni ifodalash uchun nechta raqam ishlatilishini belgilaydi. Standart holatda u ko‘rsatiladigan qiymatli raqamlar sonini belgilaydi. Agar ios::fixed yoki ios::scientific flagi yoqilgan bo‘lsa, u o‘nlik nuqtadan keyin nechta raqam kelishini belgilaydi.
cout.width(w) metodi keyingi chiqariladigan natija egallashi kerak bo‘lgan eng kam kenglikni belgilarda belgilaydi. Agar natijadagi belgilar yetarli bo‘lmasa, qolgan joyni to‘ldirish uchun to‘ldiruvchi belgilar qo‘shiladi. Standart holatda to‘ldiruvchi belgilar bo‘sh joylardan iborat bo‘lib, ular chap tomonga qo‘shiladi, natijada tarkib o‘ngga tekislanadi. Tekislashni quyidagi Flaglar bo‘limida tavsiflangan ios::adjustfield flaglaridan biri yordamida o‘zgartirish mumkin.
Misol
cout.width(10);
cout << 5 << "\n";
cout.width(10);
cout << 25 << "\n";
cout.width(10);
cout << 125 << "\n";
cout.fill(c) metodi to‘ldiruvchi sifatida qaysi belgi ishlatilishini belgilaydi.
Misol
cout.fill('.');
cout.width(10);
cout << 5 << "\n";
cout.width(10);
cout << 25 << "\n";
cout.width(10);
cout << 125 << "\n";
Flaglar
setf() va unsetf() metodlari natija formatini o‘zgartiradigan flaglarni o‘rnatish yoki bekor qilish uchun ishlatiladi. Turli xil flaglar mavjud. Ba’zi flaglar biror guruhga tegishli bo‘ladi va bunday holda guruhdagi boshqa flaglar bekor qilinishi uchun setf() metodida flag qaysi guruhga tegishli ekanini ko‘rsatuvchi ikkinchi parametr bo‘lishi kerak.
| Flag | Sintaksis | Tavsif |
|---|---|---|
ios::boolalpha |
cout.setf(ios::boolalpha) |
Boolean qiymatlarni "1" va "0" o‘rniga "true" va "false" ko‘rinishida ko‘rsatadi. |
ios::showbase |
cout.setf(ios::showbase) |
Butun sonlarni o‘n oltilik yoki sakkizlik ko‘rinishda ifodalashda sanoq sistemasini ko‘rsatish uchun sonlar oldiga "0x" yoki "0" qo‘yadi. |
ios::showpoint |
cout.setf(ios::showpoint) |
Suzuvchi nuqtali sonlarda o‘nlik nuqtani, hatto u kerak bo‘lmasa ham, har doim ko‘rsatadi. |
ios::showpos |
cout.setf(ios::showpoint) |
Musbat sonlar yonida har doim + belgisini ko‘rsatadi. |
ios::uppercase |
cout.setf(ios::uppercase) |
O‘n oltilik raqamlarni va ilmiy yozuvdagi "e" harfini katta harfda ifodalaydi. |
ios::dec |
cout.setf(ios::dec, ios::basefield) |
Butun sonlarni o‘nlik raqamlar bilan ifodalaydi. ios::basefield guruhiga tegishli. |
ios::hex |
cout.setf(ios::hex, ios::basefield) |
Butun sonlarni o‘n oltilik raqamlar bilan ifodalaydi. ios::basefield guruhiga tegishli. |
ios::oct |
cout.setf(ios::oct, ios::basefield) |
Butun sonlarni sakkizlik raqamlar bilan ifodalaydi. ios::basefield guruhiga tegishli. |
ios::fixed |
cout.setf(ios::fixed, ios::floatfield) |
Suzuvchi nuqtali sonlarni kasr qismidagi raqamlar soni qat’iy belgilangan holda ifodalaydi. Kasr qismidagi raqamlar sonini cout.precision() metodi yordamida belgilash mumkin. ios::floatfield guruhiga tegishli. |
ios::scientific |
cout.setf(ios::scientific, ios::floatfield) |
Suzuvchi nuqtali sonlarni ilmiy yozuvda ifodalaydi. Kasr qismidagi raqamlar sonini cout.precision() metodi yordamida belgilash mumkin. ios::floatfield guruhiga tegishli. |
ios::internal |
cout.setf(ios::internal, ios::adjustfield) |
Agar kenglik belgilangan bo‘lsa, sonlarda ishora chapga, qiymat esa o‘ngga tekislanadi, boshqa ma’lumot tiplarida esa natija o‘ngga tekislanadi. ios::adjustfield guruhiga tegishli. |
ios::left |
cout.setf(ios::left, ios::adjustfield) |
Kenglik belgilangan bo‘lsa, natijani chapga tekislaydi. ios::adjustfield guruhiga tegishli. |
ios::right |
cout.setf(ios::right, ios::adjustfield) |
Kenglik belgilangan bo‘lsa, natijani o‘ngga tekislaydi. ios::adjustfield guruhiga tegishli. |
Misol
Natija qanday formatlanishini o‘zgartirish uchun flaglardan foydalaning:
// Booleans
cout << "Booleans\n";
cout << false << "\n";
cout.setf(ios::boolalpha);
cout << false << "\n";
// Hexadecimal and octal numbers
cout << "\nHexadecimal and octal numbers\n";
int myInt = 14;
cout << myInt << "\n";
cout.setf(ios::hex, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::oct, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::showbase);
cout.setf(ios::uppercase);
cout.setf(ios::hex, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::oct, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::dec, ios::basefield);
// Floating point numbers
cout << "\nFloating point numbers\n";
float myFloat = 19.99;
cout << myFloat << "\n";
cout.setf(ios::fixed, ios::floatfield);
cout << myFloat << "\n";
cout.setf(ios::scientific, ios::floatfield);
cout << myFloat << "\n";
cout.unsetf(ios::floatfield);
cout.setf(ios::showpos);
cout.setf(ios::showpoint);
cout << 12345.0 << "\n";
// Alignment
cout << "\nAlignment\n";
cout.setf(ios::left, ios::adjustfield);
cout << setw(10) << "Left" << "\n";
cout.setf(ios::right, ios::adjustfield);
cout << setw(10) << "Right" << "\n";
cout.setf(ios::internal, ios::adjustfield);
cout << setw(10) << 12345.0 << " (Internal)\n";
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
