INPUT/OUTPUT FORMATİNG
INPUT/OUTPUTFORMATİNG
Company Logo
~INPUT/OUTPUT formating~
C++ ‘ın Giriş/Çıkış (Input/Output) sistemi akımlar
(stream) üzerinde hareket eder. Akım ise bilgiyi üretir yada alır. Akımı sanal bir cihaz gibide düşünebiliriz. Farklı aygıtlara aynı arabirimi
kullanarak ulaşabiliriz. C++ ‘daki kendiliğinden açılan akımlar; cout, cin, clog ve cerr ‘dir. Cerr
standart hatadır, clog ise önbellekli standart hatadır.
Company Logo
~INPUT/OUTPUT formating~
Akımların yerli yerinde ve bir sistem içinde işlemesi için birçok kütüphaneye ihtiyaç vardır. C++ programında yapacağımız her eylemin bir kütüphane içinde dahil edilmesi gerektiği
unutulmaması gerekir.
Company Logo
C++ kütüphaneleri
<iostream> C++ programındaki giriş çıkış birimleri hakkında temel biligileri içeren bir
kütüphanedir. Örnek verecek olursak cin, cout, cerr and clog gibi standart giriş birimi standart çıkış birimi standart hata ayıklama
gibi temel bilgileri içerir.
Company Logo
<iostream> kütüphanesi
showpoint-noshowpoint
showbase-noshowbase
İnternal-left-right
fixed
boolalpha()-nonboolalpha()
showpos-noshowpos
scientific
dec-hex-oct
Uppercase-nouppercase
Company Logo
boolalpha-noboolalpha()
Girilen boolean değerinin true-false yada noboolalpha ile 1-0 olarak çıktısı sağlanır.
Örnek:
#include <iostream> using namespace std; int main () { bool b; b=true; cout << noboolalpha << b << endl; cout << boolalpha << b << endl; return 0; }
ÇIKTISI:
1TRUE
Company Logo
Dec-hex-oct
Girilen sayısal değeri decimal, hexadecimal ve octal değerli çıkışı sağlanır.
Örnek:
#include <iostream> using namespace std; int main () { int n; n=70; cout << dec << n << endl; cout << hex << n << endl; cout << oct << n << endl; return 0;
}
ÇIKTISI:
7046106
Company Logo
Showpos-noshowpos
Girilen sayısal değerlerin çıktısının pozitif yada negatif işaretli değerlerini gösterir.
ÖRNEK:
#include <iostream>
using namespace std;
int main (){
signed int p, z, n; p=1; z=0; n=-1;
cout << noshowpos << p << '\t' << z << '\t' << n << endl;
cout << showpos << p << '\t' << z << '\t' << n << endl;
return 0;
}
ÇIKTISI:
1 0 -1
+1 +0 -1
Company Logo
Fixed-scientific
FİXED:Girilen float-int-double float gibi sayıları verdiğimiz genişlikte sabitleyen bir komuttur.
SCIENTIFIC: Girilen sayısal ifadeyi bilimsel olarak gösteren komuttur.Örnek:
#include <iostream> using namespace std; int main () { double a,b,c; a = 3.1415926534; b = 2006.0; c = 1.0e-10; cout.precision(5); cout << a << '\t' << b << '\t' << c << endl; cout << fixed << a << '\t' << b << '\t' << c ;cout << scientific << a << '\t' << b << '\t'<< c;return 0;
}
ÇIKTISI:
3.1416 2006 1e-010
3.14159 2006.00000 0.00000
3.14159e+000 2.00600e+003 1.00000e-010
Company Logo
İnternal-left-right
Girilen değer için ayrılan alandaki hizalamayı sağlamak için kullanılan bir komuttur.
ÖRNEK:#include <iostream> using namespace std; int main () { int n; n=-77; cout.width(6); cout << left << n << endl; cout.width(6); cout << internal << n << endl; cout.width(6); cout << right << n << endl; return 0; }
ÇIKTISI:
-77
- 77
-77
Company Logo
Showbase-noshowbase
Girilen sayının basamak değerini normal yada tam karşılığını yazdırmak için kullanılan bir <iostream> kütüphanesi fonksiyonudur.
#include <iostream> using namespace std; int main () { int n; n=20; cout << hex << noshowbase << n << endl; cout << hex << showbase << n << endl; return 0;
}
ÇIKTISI:
14
0x14
Company Logo
Showpoint-noshowpoint
Girilen kayar nokatalı(double-float) sayılırın virgülden sonraki basamaklarının gösterilip gösterilmeyeceğinin belirtilmesi için kullanılır.
ÖRNEK:
#include <iostream> using namespace std; int main () { double a, b, pi; a=30.0; b=10000.0; pi=3.1416; cout.precision (5); cout << noshowpoint << a << '\t' << b << '\t' << pi << endl; cout << showpoint << a << '\t' << b << '\t' << pi << endl;return 0;
}
ÇIKTISI:
30 10000 3.1416
30.000 10000. 3.1416
Company Logo
Uppercase-nouppercase
Girilen değerin çıktısının büyük olup olmayacağını belirtir.
Örnek:#include <iostream> using namespace std; int main () { cout << uppercase << a << endl; cout << nouppercase << a << endl; return 0;
}
ÇIKTISI:
A
a
Company Logo
<iomanip>
iomanip.h c++ programına ait iostream kütüphanesinin yani standart giriş çıkış
birimlerinin formatlı yazdırma fonksiyonlarını içeren bir kütüphanedir.
<iomanip> kütüphanesine ait birçok fonksiyon vardır.
Company Logo
<iomanip>fonksiyonlarI
resetiosflags()
setf() –unsutf()
setbase() resetiosflags ()
setw()- width()
setfill()
setprecision()
setiosflags()
Company Logo
Setw() Fonksiyonu
Girilen herhangi bir değişken için ayrılacak olan karakter genişliğini belirlemeye yarayan bir
<iomanip> kütüphanesi fonksiyonudur. Diğer bir kullanım şekli ise “width()” şeklindedir.
Örnek:#include<iostream>#include<iomanip>using namespace std;int main(){ int sayi= 234; cout<<setw(9)<<sayi<<endl; cout<<setw(6)<<sayi <<endl; cout<<setw(3)<<sayi <<endl; return 0;}
ÇIKTISI:
- - - - - 234
- - - 234
234
Company Logo
Setfill()- Fonksiyonu
<iomanip> kütüphanesine ait formatlı yazdırma komutudur.Bu komutla bıraktığımız boşlukları verilen herhangi bir karakterle doldurmamızı sağlayan fonksiyondur.
Örnek:#include<iostream>#include<iomanip>using namespace std;int main(){ int sayi= 234; cout<<setfill('*')<<setw(9)<<sayi<<endl; cout<<setfill('*')<<setw(6)<<sayi <<endl; cout<<setfill('*')<<setw(4)<<sayi <<endl; return 0;}
ÇIKTISI:
* * * * * * 234* * * 234* 234
Company Logo
Setprecision() Fonksiyonu
Girilen ondalıklı sayıları formatlı bir şekilde ve noktadan sonraki duyarlılığı belirlemek için
kullanılan bir <iomanip> fonksiyondur. Örnek:#include<iostream>#include<iomanip> using namespace std;int main(){double sayi= 22.70964345;cout<<setprecision(5)<<sayi<<endl;cout<<setprecision(7)<<sayi <<endl;cout<<setprecision(8)<<sayi <<endl;return 0;}
ÇIKTISI:
22.70964
22. 7096434
22. 70964345
Company Logo
Setbase() Fonksiyonu
Biraz önce hex-dec ve oct foksiyonlarıyla sayıyı 16lık(hexadecimal), 10luk(decimal), 8 lik(octal), sayi sistemlerine dönüştürmek için kullanıyorduk. “setbase()” fonsiyonu ise istediğimiz basamağı
fonksiyona yazarak kullanılan bir <iomanip> komutudur.Ancak içine 8-10 ve 16 lık basamak değerlerini alır.
Örnek:#include <iostream> #include <iomanip> using namespace std; int main () { cout << setbase (16); cout << 100 << endl; return 0;
}
ÇIKTISI:
64
Company Logo
Setf() Fonksiyonu
Formatlı yazdırma tekniğinde özelikle sağa dayalı,sola dayalı hangi basamakta yazılacağını ve noktadan sonra kaç hane gösterilmesi gerekiyor diye kavramları belirlemek için kullanılan çok önemli bir fonksiyondur.
//cout.setf ( ios::right, ios::adjustfield); şeklinde kullanılır. Ve kullanımda çeşitli parametreler alabilir.
//adjustfield (left, right), basefield (dec, hex, oct), floatfield (scientific, fixed)
Company Logo
Setf() Fonksiyonu
örnek:#include <iostream>#include <iomanip>using namespace std;int main () {cout<<setw(15) //cout.width(8) diğer bir kullanım şeklicout.setf ( ios::left);cout.setf (ios::hex,ios::basefield); // hex(16)lık sistem seçildicout.setf ( ios::showbase ); // 0x aktif edildicout.fill(‘*'); cout << 200 << endl;cout.setf ( ios::fixed, ios::noshowbase ); // 0x kaldırıldıcout << 200 << endl;return 0;}
ÇIKTISI:
0X128 * * * * * * * * * *
128
Company Logo
Unsetf() Fonksiyonu
“Unsetf()” komutu ise adındanda anlaşılacağı gibi “setf()” fonksiyonun tam tersi işleve sahip bir
fonksiyondur. Aynı programda setf ile oluşturulan (basefield gibi) seçilen alanın format özelliklerini devre dışı bırakır ve bir önceki ya da
doğal halinin görüntülenmesini sağlar.
Kullanımı // cout.unsetf ( ios_base::basefield ); şeklindedir. Bir önceki proğramda kullanılan
basefield özelliğini kaldırmamızı sağlar.
Company Logo
Unsetf() Fonksiyonu
Örnek:#include <iostream>#include <iomanip>using namespace std;int main ()
{cout.setf(ios_base::hex,ios_base::basefield ); //hex(16) sayı basamağı seçildi
cout << 200 << endl;cout.unsetf (ios_base::basefield ); // onaltılık sayı sistemi geri dönüştürüldücout << 200 << endl; ve tekrar standart olan 10 luk sayı basamağına dönüştürüldü.
return 0;}
ÇIKTISI:
0X128 200
Company Logo
Setiosflags() Fonksiyonu
“setiosflags()” fonksiyonu ile girilen değere showbase-uppercase gibi özeliği vermezi sağlayan bir <iomanip> kütüphanesi fonsiyonudur.
Örnek:#include <iostream>
#include <iomanip>using namespace std;int main (){ cout << hex << setiosflags ( ios_base::uppercase | ios_base::showbase);cout << 200 << endl; return 0;
}
ÇIKTISI:
0X128
Company Logo
Resetiosflags() Fonksiyonu
“Resetiosflags()” Fonksiyonu ise “setiosflags()” fonksiyonun tam tersi özelliğe sahip bir fonsiyondur. Aynı programda “setiosflags()”ile verilen formatın özelliklerini devre dışı bırakır ve bir önceki ya da doğal halinin görüntülenmesini sağlar. Yani reset atmış olur
Örnek:#include <iostream>#include <iomanip>using namespace std;int main () {cout << hex << setiosflags (ios_base::showbase);cout << 200 << endl;cout << resetiosflags (ios_base::showbase) << 100 << endl;return 0;}
ÇIKTISI:
128