MỤC LỤC
Thông thờng giá trị f đợc xác định bằng cách tổ hợp các cờ trình bầy trong mục 6.1. Thông thờng giá trị f đợc xác định bằng cách tổ hợp các cờ trình bầy trong mục 6.1.
Chú ý 1: Có thể dùng các dòng cerr và clog để xuất ra màn hình nh đã dùng đối với cout. Chúng ta nhận thấy, nếu bỏ câu lệnh clog.flush() thì sẽ không nhìn thấy kết quả xuất ra màn hình khi chơng trình tạm dừng bởi câu lệnh getch(). 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ể. + 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. + Các tham số buf và n xác định một vùng nhớ n byte do buf trỏ tới.
Để 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. Chú ý: Trớc khi kết thúc chơng trình, dữ liệu từ bộ đệm sẽ đợc tự. 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) nhng thay việc xuất ra màn hình bằng xuất ra máy in.
Dùng lớp fstream để tạo ra một dòng nhập-xuất và gắn nó với một tệp cụ thể. Thực hiện nhập dữ liệu từ dòng nhập-xuất vừa tạo nh thể nhập dữ liệu từ dòng nhập chuẩn cin. Thực hiện xuất dữ liệu ra dòng nhập-xuất vừa tạo nh thể xuất dữ.
Việc xuất dữ liệu ra máy in hoặc lên tệp đợc thực hiện hoàn toàn giống nh xuất dữ liệu ra dòng xuất chuẩn cout (màn hình). Việc đọc dữ liệu từ tệp đợc thực hiện hoàn toàn giống nh nhập dữ liệu từ dòng nhập chuẩn cin (bàn phím). + Tham số thứ ba prot quy định cấp bảo vệ của dòng tin, tham số này có thể bỏ qua vì nó đã đợc gán một giá trị mặc định.
(Để mở và lấy chỉ số (số hiệu) tệp có thể dùng hàm _open, xem cuốn Kỹ thuật Lập trình C của tác giả).
+ Cách 1: Dùng hàm tạo 2 để xây dựng một dòng xuất, mở một tệp để ghi và gắn tệp với dòng xuất. Sau đó dùng toán tử xuất << và các phơng thức để xuất dữ liệu ra dòng xuất vừa tạo nh thể xuất dữ. Sau đó dùng phơng thức open để mở một tệp cụ thể và cho gắn với dòng xuất vừa xây dựng.
Khi không cần làm việc với tệp này nữa, chúng ta có thể dùng phơng thức close để chấm dứt mọi ràng buộc giữa dòng xuất và tệp. Theo cách này, có thể dùng một dòng xuất (đối tợng ofstream) để xuất dữ liệu lên nhiều tệp khác nhau.
+ Sắp xếp dẫy thí sinh (vừa nhập từ tệp) theo thứ tự giảm của tổng. + Ghi danh sách thí sinh sau khi sắp xếp lên tệp DS3.DL + Đọc danh sách thí sinh từ tệp DS3.DL.
Định thực hiện một thao tác nhng tệp lại không đợc mở ở mode phù hợp để thực hiện thao tác đó. Tóm lại khi làm việc với tệp thờng gặp nhiều lỗi khác nhau, nếu không biết cách phát hiện xử lý thì chơng trình sẽ dẫn đến rối loạn hoặc cho kết quả sai. Trong lớp ios của C++ có nhiều phơng thức cho phép phát hiện lỗi khi làm việc với tệp.
Nếu con trỏ tệp đã ở cuối tệp mà lại thực hiện một lệnh đọc dữ. Phơng thức fail() trả về giá trị khác không nếu lần nhập xuất cuối cùng có lỗi, trái lại phơng thức có giá trị bằng 0. Phơng thức bad() trả về giá trị khác không khi một phép nhập xuất không hợp lệ hoặc có lỗi mà cha phát hiện đợc, trái lại phơng thức có giá trị bằng 0.
Khi tạo tệp mới để ghi cần kiểm tra xem có tạo đợc tệp hay không. Cần chú ý rằng: Cách đọc ghi ký tự theo kiểu văn bản khác với cách đọc ghi ký tự theo kiểu nhị phân (xem chơng 10, cuốn Kỹ thuật lập trình C của tác giả). Chú ý là phải dùng kiểu nhập xuất nhị phân thì thuật toán mới cho kết quả chính xác.
Chú ý: Các phơng thức write, read chỉ làm việc một cách chính xác trong kiểu nhập-xuất nhị phân. Dới đây là chơng trình sao tệp sử dụng các phơng thức write, read và gcount. Đọc ghi đồng thời theo kiểu nhị phân Chơng trình dới đây minh hoạ cách đọc ghi đồng thời trên tệp theo kiểu nhị phân.
Chơng trình sử dụng các phơng thức write, read, các phơng thức di chuyển con trỏ tệp và các phơng thức kiểm tra lỗi. Trong các mục trên đã trình bầy cách dùng các toán tử nhập >> và xuất << để ghi dữ liệu kiểu chuẩn (nguyên, thực, ký tự, chuỗi ký tự) trên tệp. Mục này trình bầy cách xây dựng các toán tử dùng để đọc ghi các đối tợng của một lớp bất kỳ do ngời dùng định nghĩa.
Giả sử chúng ta muốn sử dụng các toán tử nhập xuất để đọc ghi các đối tợng của lớp TS. Về kiểu ghi: Có thể xây dựng các toán tử để thực hiện các phép. Chơng trình dới đây minh hoạ cách xây dựng và sử dụng các toán tử nhập xuất đối tợng trên màn hình, bàn phím và tệp.
Chơng trình đa vào lớp TS (Thí sinh) và các hàm toán tử cho phép nhập xuất các đối tợng TS trên màn hình, bàn phím và tệp. + Chuyển con trỏ về đầu tệp, dùng chu trình while để lần lợt đọc các đối tợng từ tệp và in ra màn hình. Dùng phơng thức eof để kiểm tra xem đã đọc hết dữ liệu hay cha.
Chơng trình dới đây cũng có các chức năng nh chơng trình trong ví dụ 1 bên trên, nhng cách ghi đọc tệp theo kiểu nhị phân. Mục này hệ thống lại các lớp stream mà chúng ta đã sử dụng bên trên để tổ chức xuất nhập trên màn hình, bàn phím, máy in và tệp 18.1.