Các bộ phận định dạng và các hàm định dạng
7.1. Các bộ phận định dạng (định nghĩa trong <iostream.h>)
Các bộ phận định dạng gồm:
dec // như cờ ios::dec
oct // như cờ ios::oct
hex // như cờ ios::hex
endl // xuất ký tự ‘\n’ (chuyển dòng)
flush // đẩy dữ liệu ra thiết bị xuất
Chúng có tác dụng như cờ định dạng nhưng được viết nối đuôi trong toán tử xuất nên tiện
sử dụng hơn.
Ví dụ xét chương trình đơn giản sau:
//CT7_08.CPP
// Bo phan dinh dang
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout.setf(ios::showbase)
cout << "ABC" << endl << hex << 40 << " " << 41;
getch();
}
Chương trình sẽ in 2 dòng sau ra màn hình:
ABC
0x28 0x29
7.2. Các hàm định dạng (định nghĩa trong <iomanip.h>)
Các hàm định dạng gồm:
setw(int n) // như cout.width(int n)
setpecision(int n) // như cout.pecision(int n)
setfill(char ch) // như cout. fill(char ch)
setiosflags(long l) // như cout.setf(long f)
clrscr();
cout << "ABC" << endl << setiosflags(ios::showbase)
<< hex << 40 << " " << 41;
getch();
}
Dưới đây là ví dụ khác về việc dùng các hàm và bộ phận định dạng. Các câu lệnh:
int i = 23;
cout << i << endl << setiosflags(ios::showbase)
<< hex << i << dec << setfill(‘*’)
<< endl << setw(4) << i << setfill(‘0’)
<< endl << setw(5) << i ;
sẽ in ra màn hình như sau:
23
0x17
**23
00023
386
7.3. Ví dụ: Chương trình dưới đây minh hoạ cách dùng các hàm định dạng và phương thức
định dạng để in danh sách thí sinh dưới dạng bảng với các yêu cầu sau: Số báo danh in 4 ký tự
(chèn thêm số 0 vào trước ví dụ 0003), tổng điểm in với đúng một chữ số phần phân.
//CT7_08.CPP
// Bo phan dinh dang
// Ham dinh dang
// Co dinh dang
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
struct TS
{
int sobd;
void xuat();
} ;
void TSINH::nhap()
{
if (sots)
for (int i=1; i<=sots; ++i)
{
cout << "\nThi sinh "<< i << ": " ;
cout << "\nSo bao danh: " ;
cin >> ts[i].sobd;
cin.ignore();
cout << "Ho ten: " ;
cin.get(ts[i].ht,25);
cout << "Diem toan, ly , hoa: " ;
cin >> ts[i].dt >> ts[i].dl >> ts[i].dh;
ts[i].td = ts[i].dt + ts[i].dl + ts[i].dh;
}
}
void TSINH::sapxep()
{
int i,j;
for (i=1; i< sots; ++i)
for (j=i+1; j<= sots; ++j)
if (ts[i].td < ts[j].td)
{
TS tg;
tg=ts[i];
ts[i]=ts[j];
ts[j]=tg;
}
}
390