iomanip - WordPress.com

Download Report

Transcript iomanip - WordPress.com

INPUT/OUTPUT
FORMATİNG
~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
boolalpha()-nonboolalpha()
dec-hex-oct
showpos-noshowpos
Uppercase-nouppercase
fixed
İnternal-left-right
scientific
showbase-noshowbase
showpoint-noshowpoint
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:
1
TRUE
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:
70
46
106
}
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>
ÇIKTISI:
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;
1
0
-1
+1
+0
-1
return 0;
}
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:
ÇIKTISI:
#include <iostream>
using namespace std;
int main () {
double a,b,c; a = 3.1415926534;
b = 2006.0;
c = 1.0e-10;
cout.precision(5);
3.1416
2006
1e-010
cout << a << '\t' << b << '\t' << c << endl;
3.14159
2006.00000
0.00000
cout << fixed << a << '\t' << b << '\t' << c ;
cout << scientific << a << '\t' << b << '\t'<< c; 3.14159e+000 2.00600e+003 1.00000e-010
return 0;
}
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
setw()- width()
setfill()
setprecision()
setbase() resetiosflags ()
setf() –unsutf()
setiosflags()
resetiosflags()
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:
ÇIKTISI:
#include <iostream>
#include <iomanip>
0X128 * * * * * * * * * *
using namespace std;
128
int main ()
{
cout<<setw(15)
//cout.width(8) diğer bir kullanım şekli
cout.setf ( ios::left);
cout.setf (ios::hex,ios::basefield);
// hex(16)lık sistem seçildi
cout.setf ( ios::showbase );
// 0x aktif edildi
cout.fill(‘*');
cout << 200 << endl;
cout.setf ( ios::fixed, ios::noshowbase );
// 0x kaldırıldı
cout << 200 << endl;
return 0;
}
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 ()
ÇIKTISI:
0X128
200
{
cout.setf(ios_base::hex,ios_base::basefield );
cout << 200 << endl;
cout.unsetf (ios_base::basefield );
cout << 200 << endl;
//hex(16) sayı basamağı seçildi
// onaltılık sayı sistemi geri dönüştürüldü
ve tekrar standart olan 10 luk sayı
basamağına dönüştürüldü.
return 0;
}
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:
ÇIKTISI:
#include <iostream>
#include <iomanip>
0X128
using namespace std;
int main ()
{
cout << hex << setiosflags ( ios_base::uppercase |
ios_base::showbase);
cout << 200 << endl; return 0;
}
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>
ÇIKTISI:
#include <iomanip>
using namespace std;
128
int main ()
{
cout << hex << setiosflags (ios_base::showbase);
cout << 200 << endl;
cout << resetiosflags (ios_base::showbase) << 100 << endl;
return 0;
}
Company Logo