Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Sinh vienit.net --01 - on tap xu ly file - c++-2

2.616 visualizaciones

Publicado el

tài liệu ôn tập file

Publicado en: Motor
  • Sé el primero en comentar

Sinh vienit.net --01 - on tap xu ly file - c++-2

  1. 1. 20/06/2010 ĐHSP Ôn tập xử lý tập tin với C++ http://fit.hcmup.edu.vn/~tienttt Cấu trúc 2 20/06/2010 1
  2. 2. 20/06/2010 Text file Dữ liệu trong file được lưu trữ dưới dạng ASCII. Ví dụ: chuỗi “AB” và 12 được lưu trữ trong file và có khoảng trắng giữa chúng. 3 20/06/2010 Binary file Dữ liệu được lưu trữ dưới dạng mã nhị phân. Lưu trữ dữ liệu dạng cấu trúc, có kích thước cố định. Thường dùng để ghi toàn bộ một struct hay một đối tượng ra file. 4 20/06/2010 2
  3. 3. 20/06/2010 Khai báo mở tập tin để ghi dữ liệu ofstream <tên biến>; ofstream <tên biến>(<tên file>);  Ví dụ: ofstream fout; fout.open(“data.txt”); hoặc ofstream fout(“data.txt”); Ghi dữ liệu chuẩn  Tương tự như cout  <tên biến> <toán tử xuất (<<)>  Ví dụ: int a; fout<<a; 5 20/06/2010 Ghi dữ liệu dạng nhị phân     ostream& write(char* pch,int nCount); ostream& write(unsigned char* puch,int nCount); ostream& write(signed char* psch,int nCount); Giải thích tham số • pch,puch,psch: con trỏ đến mảng ký tự lưu dữ liệu. • nCount: số byte cần ghi 6 20/06/2010 3
  4. 4. 20/06/2010 Ví dụ Ghi dữ liệu của 5 phần tử số nguyên liên tiếp ra file dạng nhị phân --------------------------------------------------------- int a[10]; a[0]=65;a[1]=66;a[2]=97;a[3]=99;a[4]=67; ofstream fout(“data.txt”); int n=5; fout.write((char*)a,n*sizeof(*a)); fout.close(); 7 20/06/2010 Mở tập tin để đọc dữ liệu ifstream <tên biến>; ifstream <tên biến>(<tên file>);  Ví dụ: ifstream fin; fin.open(“data.dat”); hoặc ifstream fin(“data.dat”); Đọc dữ liệu chuẩn  Tương tự như cin  <tên biến> <toán tử nhập (>>)>  Ví dụ: int a; fin>>a; 8 20/06/2010 4
  5. 5. 20/06/2010 Đọc dữ liệu dạng nhị phân  istream& read(char* pch, int nCount);  istream& read(unsigned char* puch, int nCount);  istream& read(signed char* psch, int nCount); Giải thích tham số  pch,puch,psch: con trỏ đến mảng ký tự lưu dữ liệu.  nCount: số byte lớn nhất cần đọc 9 20/06/2010 Ví dụ Đọc dữ liệu của 5 phần tử số nguyên liên tiếp đã ghi dạng nhị phân ------------------------------------------------------------int a[10]; ifstream fin(“data.dat”); int n=5; fin.read((char*)a,n*sizeof(*a)); fin.close(); 10 20/06/2010 5
  6. 6. 20/06/2010 Một số thao tác khác với tập tin Lấy vị trí hiện tại của con trỏ tập tin  Khi đọc • Dùng hàm tellg(); • Ví dụ: long pos=fin.tellg();  Khi ghi • Dùng hàm tellp(); • Ví dụ: long pos=fout.tellp(); 11 20/06/2010 Một số thao tác khác với tập tin  Di chuyển con trỏ đến một vị trí trong tập tin  Khi đọc • Dùng hàm seekg(long sobyte, ios::xx vtbd); • Ví dụ: fin.seekg(0,ios::beg); //về đầu tập tin  Khi ghi • Dùng hàm seekp(long sobyte, ios::xx vtbd); • Ví dụ: fout.seekp(0,ios::end); //đến cuối tập tin  Hằng số • ios::beg: di chuyển từ đầu tập tin • ios::cur: di chuyển từ vị trí hiện tại của con trỏ • ios::end: di chuyển từ cuối tập tin 12 20/06/2010 6
  7. 7. 20/06/2010 Ví dụ Tính kích thước của tập tin -------------------------------------------long SizeOf(char *fileName) { long end,begin; ifstream myfile(fileName); begin = myfile.tellg(); myfile.seekg(0, ios::end); end = myfile.tellg(); myfile.close(); return end-begin; } 13 20/06/2010 fstream Sử dụng đối tượng của lớp này có thể vừa đọc vừa ghi dữ liệu trong cùng một tập tin is_open(): Trả về true nếu đang mở, false nếu không mở. Mở tập tin vừa đọc vừa ghi dạng nhị phân fstream f; f.open(“data.dat”,ios::in|ios::out|ios::binar y); ios::in, ios::out, ios::app, ios::nocreate, … 14 20/06/2010 7
  8. 8. 20/06/2010 ĐHSP 8

×