Tác giả phạm hồng thái bài giảng ngôn ngữ LẬp trình c/C++



tải về 1.98 Mb.
trang52/55
Chuyển đổi dữ liệu07.07.2016
Kích1.98 Mb.
1   ...   47   48   49   50   51   52   53   54   55

Toán tử xuất <<


Toán tử này cho phép xuất giá trị của dãy các biểu thức đến một dòng Output_stream nào đó với cú pháp chung như sau:

Output_stream << bt_1 << bt_2 << …

ở đây Output_stream là đối tượng thuộc lớp ostream. Trường hợp Output_stream là cout, câu lệnh xuất sẽ được viết:



cout << bt_1 << bt_2 << …

câu lệnh này cho phép in kết quả của các biểu thức ra màn hình. Kiểu dữ liệu của các biểu thức có thể là số nguyên, thực, kí tự hoặc xâu kí tự.


ĐỊNH DẠNG


Các giá trị in ra màn hình có thể được trình bày dưới nhiều dạng khác nhau thông qua các công cụ định dạng như các phương thức, các cờ và các bộ phận khác được khai báo sẵn trong các lớp ios và ostream.

Các phương thức định dạng

Chỉ định độ rộng cần in


cout.width(n) ;

Số cột trên màn hình để in một giá trị được ngầm định bằng với độ rộng thực (số chữ số, chữ cái và kí tự khác trong giá tị được in). Để đặt lại độ rộng màn hình dành cho giá trị cần in (thông thường lớn hơn độ rộng thực) ta có thể sử dụng phương thức trên.

Phương thức này cho phép các giá trị in ra màn hình với độ rộng n. Nếu n bé hơn độ rộng thực sự của giá trị thì máy sẽ in giá trị với số cột màn hình bằng với độ rộng thực. Nếu n lớn hơn độ rộng thực, máy sẽ in giá trị căn theo lề phải, và để trống các cột thừa phía trước giá trị được in. Phương thức này chỉ có tác dụng với giá trị cần in ngay sau nó. Ví dụ:

int a = 12; b = 345; // độ rộng thực của a là 2, của b là 3

cout << a; // chiếm 2 cột màn hình

cout.width(7); // đặt độ rộng giá trị in tiếp theo là 7

cout << b; // b in trong 7 cột với 4 dấu cách đứng trước

Kết quả in ra sẽ là: 12<><><><>345


Chỉ định kí tự chèn vào khoảng trống trước giá trị cần in


cout.fill(ch) ;

Kí tự độn ngầm định là dấu cách, có nghĩa khi độ rộng của giá trị cần in bé hơn độ rộng chỉ định thì máy sẽ độn các dấu cách vào trước giá trị cần in cho đủ với độ rộng chỉ định. Có thể yêu cầu độn một kí tự ch bất kỳ thay cho dấu cách bằng phương thức trên. Ví dụ trong dãy lệnh trên, nếu ta thêm dòng lệnh cout.fill('*') trước khi in b chẳng hạn thì kết quả in ra sẽ là: 12****345.

Phương thức này có tác dụng với mọi câu lệnh in sau nó cho đến khi gặp một chỉ định mới.

Chỉ định độ chính xác (số số lẻ thập phân) cần in


cout.precision(n) ;

Phương thức này yêu cầu các số thực in ra sau đó sẽ có n chữ số lẻ. Các số thực trước khi in ra sẽ được làm tròn đến chữ số lẻ thứ n. Chỉ định này có tác dụng cho đến khi gặp một chỉ định mới. Ví dụ:

int a = 12.3; b = 345.678; // độ rộng thực của a là 4, của b là 7

cout << a; // chiếm 4 cột màn hình

cout.width(10); // đặt độ rộng giá trị in tiếp theo là 10

cout.precision(2); // đặt độ chính xác đến 2 số lẻ

cout << b; // b in trong 10 cột với 4 dấu cách đứng trước

Kết quả in ra sẽ là: 12.3<><><><>345.68


Các cờ định dạng


Một số các qui định về định dạng thường được gắn liền với các "cờ". Thông thường nếu định dạng này được sử dụng trong suốt quá trình chạy chương trình hoặc trong một khoảng thời gian dài trước khi gỡ bỏ thì ta "bật" các cờ tương ứng với nó. Các cờ được bật sẽ có tác dụng cho đến khi cờ với định dạng khác được bật. Các cờ được cho trong file tiêu đề iostream.h.

Để bật/tắt các cờ ta sử dụng các phương thức sau:



cout.setf(danh sách cờ); // Bật các cờ trong danh sách

cout.unsetf(danh sách cờ); // Tắt các cờ trong danh sách

Các cờ trong danh sách được viết cách nhau bởi phép toán hợp bit (|). Ví dụ lệnh cout.setf(ios::left | ios::scientific) sẽ bật các cờ ios::left và ios::scientific. Phương thức cout.unsetf(ios::right | ios::fixed) sẽ tắt các cờ ios::right | ios::fixed.

Dưới đây là danh sách các cờ cho trong iostream.h.

Nhóm căn lề


ios::left : nếu bật thì giá trị in nằm bên trái vùng in ra (kí tự độn nằm sau).

ios::right : giá trị in nằm bên phái vùng in ra (kí tự độn nằm trước), đây là trường hợp ngầm định nếu ta không sử dụng cờ cụ thể.

ios::internal : giống cờ ios::right tuy nhiên dấu của giá trị in ra sẽ được in đầu tiên, sau đó mới đến kí tự độn và giá trị số.

Ví dụ:


int a = 12.3; b = -345.678; // độ rộng thực của a là 4, của b là 8

cout << a; // chiếm 4 cột màn hình

cout.width(10); // đặt độ rộng giá trị in tiếp theo là 10

cout.fill('*') ; // dấu * làm kí tự độn

cout.precision(2); // đặt độ chính xác đến 2 số lẻ

cout.setf(ios::left) ; // bật cờ ios::left

cout << b; // kết qủa: 12.3-345.68***

cout.setf(ios::right) ; // bật cờ ios::right

cout << b; // kết qủa: 12.3***-345.68

cout.setf(ios::internal) ; // bật cờ ios::internal

cout << b; // kết qủa: 12.3-***345.68

Nhóm định dạng số nguyên


ios::dec : in số nguyên dưới dạng thập phân (ngầm định)

ios::oct : in số nguyên dưới dạng cơ số 8

ios::hex : in số nguyên dưới dạng cơ số 16

Nhóm định dạng số thực


ios::fixed : in số thực dạng dấu phảy tĩnh (ngầm định)

ios::scientific : in số thực dạng dấu phảy động

ios::showpoint : in đủ n chữ số lẻ của phần thập phân, nếu tắt (ngầm định) thì không in các số 0 cuối của phần thập phân.

Ví dụ: giả sử độ chính xác được đặt với 3 số lẻ (bởi câu lệnh cout.precision(3))

nếu fixed bật + showpoint bật :

123.2500 được in thành 123.250

123.2599 được in thành 123.260

123.2 được in thành 123.200

nếu fixed bật + showpoint tắt :

123.2500 được in thành 123.25

123.2599 được in thành 123.26

123.2 được in thành 123.2

nếu scientific bật + showpoint bật :

12.3 được in thành 1.230e+01

2.32599 được in thành 2.326e+00

324 được in thành 3.240e+02

nếu scientific bật + showpoint tắt :

12.3 được in thành 1.23e+01

2.32599 được in thành 2.326e+00

324 được in thành 3.24e+02


Nhóm định dạng hiển thị


ios::showpos : nếu tắt (ngầm định) thì không in dấu cộng (+) trước số dương. Nếu bật trước mỗi số dương sẽ in thêm dấu cộng.

ios::showbase : nếu bật sẽ in số 0 trước các số nguyên hệ 8 và in 0x trước số hệ 16. Nếu tắt (ngầm định) sẽ không in 0 và 0x.

ios::uppercase : nếu bật thì các kí tự biểu diễn số trong hệ 16 (A..F) sẽ viết hoa, nếu tắt (ngầm định) sẽ viết thường.
1   ...   47   48   49   50   51   52   53   54   55


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương