Hệ thống xuất nhập C++ - Pdf 13

Chương 7 Hệ thống Nhập/Xuất C++

Cơ sở Nhập/Xuất C++


Nhập/Xuất có đònh dạng


Sử dụng width(), precision() và fill()


Sử dụng bộ thao tác Nhập/Xuất


Tạo bộ chèn


Chương 7
Hệ thống Nhập / Xuất C++


clog Phiên bản của cerr Màn hình

Có thể đònh lại cho các stream để liên kết gắn với các thiết bò xuất nhập khác. •
Trong chương I, C++ cung cấp các hổ trợ cho hệ thống Nhập/Xuất trong file
iostream.h Nội dung của file này là các phân cấp lớp hổ trợ các thao tác
Nhập/Xuất. C++ có hai phân cấp lớp Nhập/Xuất, chúng có liên hệ với nhau
nhưng chúng không giống nhau.

Phân cấp lớp Nhập/Xuất thứ nhất được suy dẫn từ lớp Nhập/Xuất mức thấp tên là
streambuf
.
Lớp này cung cấp các thao tác cơ bản của Nhập/Xuất cấp thấp, cũng như
các hổ trợ cơ bản cho toàn bộ hệ thống Nhập/Xuất của C++
. Lập trình viên trình độ
cao nên sử dụng trực tiếp lớp
streambuf
này.

Phân cấp lớp Nhập/Xuất thứ hai có tên
ios
, là lớp Nhập/Xuất cấp cao. Nó cung cấp
các thao tác về đònh dạng, kiểm lỗi, chứa nhiều hàm và biến dùng để điều khiển và
kiểm soát các thao tác cơ bản của các stream Nhập/Xuất.

Lớp
ios
là lớp cơ sở để suy dẫn ra các lớp

dec = 0x0010;
oct = 0x0020;
hex = 0x0040;
showbase = 0x0080;
showpoint = 0x0100;
uppercase = 0x0200;
showpos = 0x0400;
scientific = 0x0800;
fixed = 0x1000;
unitbuf = 0x2000;
stdio = 0x4000;
};

Khi một cờ đònh dạng nào đó được thiết lập thì đặc tính của cờ đó trở nên có hiệu
lực. Nếu cờ đònh dạng bò xoá, hệ thống sẽ dùng giá trò mặc đònh cho đặc tính của cờ
đó. 2/ Mô tả các cờ đònh dạng•
Khi cờ
skipws
được thiết lập, các ký tự cách (gồm các ký tự khoảng cách, tab
và xuống dòng) được bỏ đi khi đọc một stream. Nếu cờ này bò xoá, các ký tự
cách sẽ không bò bỏ đi. Thường áp dụng cho một số kiểu file trên diã.

Chương 7
Hệ thống Nhập / Xuất C++

kết xuất là số hệ thập
lục. Để trả lại kiểu số thập phân, cần thiết lập cờ
dec
.


Khi đặt cờ
showbase
, cơ số của giá trò số được trình bày.


Khi đặt cờ
showpoint
cho phép in dấu chấm thập phân và các số không đi sau
kèm theo các giá trò kiểu dấu chấm động.


Theo mặc đònh, khi một con số kiểu số mũ được in ra, chữ "e" được trình bày ở
kiểu chữ thường. Tương tự, khi in một giá trò số ở hệ thập lục, ký tự " dùng chỉ
hệ thập lục được trình bày ở kiểu chữ thường. Khi cờ
upcase
được thiết lập, các
ký tự nói trên sẽ được trình bày bằng kiểu chữ in hoa.


Khi đặt cờ
showpos
làm cho xuất hiện dấu cộng phiá trước các giá trò số dương.


212

Hàm
setf()
dùng thiết lập cờ đònh dạng. Hàm này thuộc lớp
ios
. Dạng tổng quát
:
long
setf
(long
flags
) ;

Hàm trả về giá trò được thiết lập trước đó của cờ và thiết lập các cờ có tên trong
hàm. Ví dụ thiết lập cờ showpos :
stream
.setf(ios::showpos) ;

stream
là tên stream cần để thiết lập cờ showpos Lưu y
ù, trong C++, không thể đặt cờ đònh dạng ở phạm vi toàn cục chung cho tất cả
các stream, mỗi stream sẽ mang một thông tin trạng thái các đònh dạng riêng của nó
và chúng độc lập với nhau.


f
) ;

cho phép
thiết lập tất cả các cờ đònh dạng của stream
dựa theo giá trò của đối số khi
gọi hàm. Từng bit của giá trò f sẽ được gán cho biến lưu trò cờ đònh dạng, và sẽ xoá
tình trạng cờ đònh dạng trước đó. Hàm sẽ trả về giá trò tình trạng các cờ đònh dạng
trước đó.
Ví dụ 2.1
Minh hoạ hàm setf()
#include <iostream.h>
Chương 7
Hệ thống Nhập / Xuất C++
213

int main()
{
// display using default settings
cout << 123.23 << " hello " << 100 << '\n';
cout << 10 << ' ' << -10 << '\n';
cout << 100.0 << "\n\n";

// now, change formats

Ví dụ 2.2
Minh hoạ hàm unsetf()
#include <iostream.h> int main()
{
Chương 7
Hệ thống Nhập / Xuất C++
214
cout.unsetf(ios::dec);
cout.setf(ios::uppercase | ios::showbase | ios::hex);

cout << 88 << '\n';

cout.unsetf(ios::uppercase);

cout << 88 << '\n';

return 0;
} Ví dụ 2.3
Minh hoạ hàm flags()
#include <iostream.h> 215
if(f & ios::skipws) cout << "skipws on\n";
else cout << "skipws off\n";

if(f & ios::left) cout << "left on\n";
else cout << "left off\n";

if(f & ios::right) cout << "right on\n";
else cout << "right off\n";

if(f & ios::internal) cout << "internal on\n";
else cout << "internal off\n";

if(f & ios::dec) cout << "dec on\n";
else cout << "dec off\n";

if(f & ios::oct) cout << "oct on\n";
else cout << "oct off\n";
if(f & ios::hex) cout << "hex on\n";
else cout << "hex off\n";

if(f & ios::showbase) cout << "showbase on\n";
else cout << "showbase off\n";

if(f & ios::showpoint) cout << "showpiont on\n";
else cout << "showpoint off\n";


is on

left is off
right is off
internal is off
dec is off
oct is off
hex is off
showbase is off
showpoint is off
uppercase is off
showpos is off
scientific is off
fixed is off
unitbuf is off
stdio is off

skipws

is on

left is off
right is off
internal is off
dec is off
oct

is on

hex is off

208
{
// show default condition of format flags
showflags();

// showpos, showbase, oct, right are on, others off
long f = 0x04A4;

cout.flags(f); // set flags

showflags();
return 0;
} Bài tập II

1. Hãy viết chương trình thiết lập trạng thái các cờ đònh dạng, sao cho các giá trò
nguyên dương được in ra có mang dấu +. Hãy in ra cho biết là các cờ đònh dạng đã
được thiết lập.

2. Hãy viết chương trình để thiết lập trạng thái các cờ đònh dạng của stream cout sao
cho các giá trò số kiểu dấu chấm động được trình bày với dấu chấm thập phân. Ngoài
ra, các giá trò số kiểu dấu chấm động được in ra dưới dạng số mũ, với ký tự "E" chỉ
phần mũ được trình bày bằng kiểu chữ in hoa.

3. Hãy viết chương trình thực hiện chức năng lưu lại trạng thái hiện tại của các cờ


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status