Chương 7 Các dòng tập tin (Stream) Đọc ghi đồng thời trên tệp - Pdf 70

Đọc ghi đồng thời trên tệp
13.1. Lớp fstream
Để đọc ghi đồng thời trên tệp, chúng ta sử dụng lớp fstream. Lớp fstream thừa kế các
phương thức của các lớp ofstream và ifstream. Ngoài ra lớp fstream có các hàm tạo và phương
thức sau:
1. Hàm tạo:
fstream() ; // Không đối
dùng để tạo một đối tượng fstream (dòng nhập-xuất), chưa gắn với tệp.
2. Hàm tạo:
fstream(const char *fn, int mode,
int prot = filebuf::openprot);
dùng để tạo một đối tượng fstream, mở tệp có tên fn và gắn đối tượng vừa tạo với tệp được
mở.
+ Tham số fn cho biết tên tệp.
+ Tham số mode quy định các kiểu truy nhập và có thể là tổ hợp của các giá trị sau:
ios::binary đọc-ghi theo kiểu nhị phân (mặc định theo kiểu văn bản).
ios::out ghi tệp, nếu tệp đã có thì nó bị xoá
ios::in đọc tệp
ios::app ghi bổ sung vào cuối tệp
ios::ate chuyển con trỏ tệp về cuối sau khi mở
ios::trunc xoá nội dung của tệp nếu nó tồn tạI
ios::nocreate nếu tệp chưa có thì không làm gì (bỏ qua)
ios::noreplace nếu tệp đã có thì không làm gì (bỏ qua)
Chú ý:
+ Tham số mode không có giá trị mặc định.
+ 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.
3. Hàm tạo:
fstream(int fd);
dùng để tạo một đối tượng fstream và gắn nó với một tệp có chỉ số fd đang mở.
(Để 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

1. Phương thức
ostream& seekp(long n) ;
sẽ chuyển con trỏ tệp tới vị trí (byte) thứ n (số thứ tự các byte tính từ 0).
2. Phương thức
ostream& seekp(long offset, seek_dir dir) ;
sẽ chuyển con trỏ tệp tới vị trí offset kể từ vị trí xuất phát dir. Giá trị của offset có thể âm, còn
dir có thể nhận một trong các giá trị sau:
ios::beg xuất phát từ đầu tệp
ios::end xuất phát từ cuối tệp
ios::cur xuất phát từ vị trí hiện tại của con trỏ tệp
3. Phương thức
long teelp() ;
cho biết vị trí hiện tại của con trỏ tệp.
13.3.2. Để di chuyển con trỏ tệp trên dòng nhập, chúng ta sử dụng các phương thức sau
(của lớp istream):
4. Phương thức
istream& seekg(long n) ;
sẽ chuyển con trỏ tệp tới vị trí (byte) thứ n (số thứ tự các byte tính từ 0)
5. Phương thức
420
istream& seekg(long offset, seek_dir dir) ;
sẽ chuyển con trỏ tệp tới vị trí offset kể từ vị trí xuất phát dir. Giá trị của offset có thể âm, còn
dir có thể nhận một trong các giá trị sau:
ios::beg xuất phát từ đầu tệp
ios::end xuất phát từ cuối tệp
ios::cur xuất phát vị trí hiện tại của con trỏ tệp
6. Phương thức
long teelg() ;
cho biết vị trí hiện tại của con trỏ tệp.
13.3.3. Để di chuyển con trỏ tệp trên dòng nhập-xuất, chúng ta có thể sử dụng cả 6

if (f.bad())
422
{
cout << "\nTep " << ttep << " da ton tai";
cout << "\nCo ghi de? - C/K";
int ch=getch();
if (toupper(ch)=='C')
{
f.close();
f.open(ttep,ios::out|ios::in|ios::trunc) ;
}
else
exit(1);
}
stt=0 ;
f << setprecision(1) << setiosflags(ios::showpoint);
while(1)
{
++stt;
cout << "\nNhap thi sinh thu: " << stt ;
cout << "\nHo ten (neu rong thi ket thuc nhap) : ";
cin.ignore();
cin.getline(ht,25);
if (ht[0]==0) break;
cout << "Tinh - thanh pho: ";
cin.getline(ttinh,21);
cout << "SoBD, diem toan, diem ly, diem hoa: " ;
cin >> sobd >> dt>> dl >> dh ;
td = dt + dl + dh ;
if (stt>1) f << endl;

getch();
}
424


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