1. Trang chủ
  2. » Công Nghệ Thông Tin

Chương 7 Các dòng tập tin (Stream) Xuất ra máy in

4 367 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 14,02 KB

Nội dung

Xuất ra máy in Trong số 4 dòng tin chuẩn không dòng nào gắn với máy in. Như vậy không thể dùng các dòng này để xuất dữ liệu ra máy in. Để xuất dữ liệu ra máy in (cũng như nhập, xuất trên tệp) cần tạo ra các dòng tin mới và cho nó gắn với thiết bị cụ thể. C++ cung cấp 3 lớp stream để làm điều này, đó là các lớp: ifstream dùng để tạo dòng nhập ofstream dùng để tạo dòng xuất fstream dùng để tạo dòng nhập, dòng xuất hoặc dòng nhập-xuất Mỗi lớp có 4 hàm tạo dùng để khai báo các dòng tin (đối tượng dòng tin). Trong mục sau sẽ nói thêm về các hàm tạo này. Để tạo một dòng xuất và gắn nó với máy in ta có thể dùng một trong các hàm tạo sau: ofstream Tên_dòng_tin(int fd) ; ofstream Tên_dòng_tin(int fd, char *buf, int n) ; Trong đó: + Tên_dòng_tin là tên biến đối tượng kiểu ofstream hay gọi là tên dòng xuất do chúng ta tự đặt. + fd (file descriptor) là chỉ số tập tin. Chỉ số tập tin định sẵn đối với stdprn (máy in chuẩn) là 4. + Các tham số buf và n xác định một vùng nhớ n byte do buf trỏ tới. Vùng nhớ sẽ được dùng làm bộ đệm cho dòng xuất. Ví dụ 1 câu lệnh: ofstream prn(4) ; sẽ tạo dòng tin xuất prn và gắn nó với máy in chuẩn. Dòng prn sẽ có bộ đệm mặc định. Dữ liệu trước hết chuyển vào bộ đệm, khi đầy bộ đệm thì dữ liệu sẽ được đẩy từ bộ đệm ra dòng prn. Để chủ động yêu cầu đẩy dữ liệu từ bộ đệm ra dòng prn có thể sử dụng phương thức flush hoặc bộ phận định dạng flush. Cách viết như sau: prn.flush(); // Phương thức prn << flush ; // Bộ phận định dạng Các câu lệnh sau sẽ xuất dữ liệu ra prn (máy in) và ý nghĩa của chúng như sau: prn << “\nTong = “ << (4+9) ; // Đưa một dòng vào bộ đệm prn << “\nTich =“ << (4*9); // Đưa tiếp dòng thứ 2 vào bộ đệm prn.flush(); // Đẩy dữ liệu từ bộ đệm ra máy in (in 2 dòng) Các câu lệnh dưới đây cũng xuất dữ liệu ra máy in nhưng sẽ in từng dòng một: prn << “\nTong = “ << (4+9) << flush ; // In một dòng prn << “\nTich = “ << (4*9) ; << flush // In dòng thứ hai Ví dụ 2: Các câu lệnh char buf[1000] ; ofstream prn(4,buf,1000) ; sẽ tạo dòng tin xuất prn và gắn nó với máy in chuẩn. Dòng xuất prn sử dụng 1000 byte của mảng buf làm bộ đệm. Các câu lệnh dưới đây cũng xuất dữ liệu ra máy in: prn << “\nTong = “ << (4+9) ; // Đưa dữ liệu vào bộ đệm prn << “\nTich = “ << (4*9) ; // Đưa dữ liệu vào bộ đệm prn.flush() ; // Xuất 2 dòng (ở bộ đệm) ra máy in Chú ý: Trước khi kết thúc chương trình, dữ liệu từ bộ đệm sẽ được tự động đẩy ra máy in. Chương trinh minh hoạ: Chương trình dưới đây tương tự như chương trình trong mục 7.3 (chỉ sửa đổi phương thức xuất) nhưng thay việc xuất ra màn hình bằng xuất ra máy in. //CT7_08B.CPP // Xuat ra may in // Bo phan dinh dang // Ham dinh dang #include <iostream.h> #include <iomanip.h> #include <conio.h> struct TS { int sobd; char ht[25]; float dt,dl,dh,td; } ; class TSINH { private: TS *ts; int sots; public: TSINH() { ts=NULL; sots=0; } TSINH(int n) { ts=new TS[n+1]; sots=n; } ~TSINH() { if (sots) { 394 sots=0; ts = NULL; } } void nhap(); void sapxep(); 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; } } void TSINH::xuat() { 396 ostream prn(4); if (sots) { prn << "\nDanh sach thi sinh:" ; prn.precision(1); prn << setiosflags(ios::left); prn << "\n" << setw(20) <<"Ho ten" << setw(8) << "So BD"<< setw(10) << "Tong diem"; for (int i=1; i<=sots; ++i) prn << "\n" << setw(20)<<setiosflags(ios::left) <<ts[i].ht << setw(4) << setfill('0')<<setiosflags(ios::right)<< ts[i].sobd << " " << setfill(32) <<setiosflags(ios::left|ios::showpoint) <<setw(10)<< ts[i].td; } } void main() { int n; clrscr(); cout << "\nSo thi sinh: "; cin>>n; TSINH *t = new TSINH(n); t->nhap() ; t->sapxep(); t->xuat(); getch(); delete t; } . Xuất ra máy in Trong số 4 dòng tin chuẩn không dòng nào gắn với máy in. Như vậy không thể dùng các dòng này để xuất dữ liệu ra máy in. Để xuất dữ. Tên _dòng_ tin( int fd) ; ofstream Tên _dòng_ tin( int fd, char *buf, int n) ; Trong đó: + Tên _dòng_ tin là tên biến đối tượng kiểu ofstream hay gọi là tên dòng xuất

Ngày đăng: 24/10/2013, 15:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w