SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
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
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
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
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
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
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
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
20/06/2010

ĐHSP

8

Más contenido relacionado

La actualidad más candente

BÀI 11: TỆP VÀ QUẢN LÍ TỆP
BÀI 11: TỆP VÀ QUẢN LÍ TỆPBÀI 11: TỆP VÀ QUẢN LÍ TỆP
BÀI 11: TỆP VÀ QUẢN LÍ TỆPTrần Nhân
 
Bài 11: Tệp và quản lí tệp
Bài 11: Tệp và quản lí tệpBài 11: Tệp và quản lí tệp
Bài 11: Tệp và quản lí tệpThi Thanh Thuan Tran
 
Tin11 chuong 05 bai 15
Tin11 chuong 05 bai 15Tin11 chuong 05 bai 15
Tin11 chuong 05 bai 15Cam Tu Chau
 
Tin học lớp 6
Tin học lớp 6Tin học lớp 6
Tin học lớp 6Yến Nhỏ
 
Bai18 bai tap voi tep - tin 11
Bai18  bai tap voi tep - tin 11Bai18  bai tap voi tep - tin 11
Bai18 bai tap voi tep - tin 11Bich Tuyen
 
Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11Sunkute
 
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Le ngoc trien tin 10-chuong2-bài 11
Le ngoc trien  tin 10-chuong2-bài 11Le ngoc trien  tin 10-chuong2-bài 11
Le ngoc trien tin 10-chuong2-bài 11vb2tin09
 
20 lenh linux
20 lenh linux20 lenh linux
20 lenh linuxPham Tiep
 
Linux và mã nguồn mở
Linux và mã nguồn mởLinux và mã nguồn mở
Linux và mã nguồn mởNguyễn Anh
 
NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11
NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11
NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11Tin 5CBT
 

La actualidad más candente (19)

Huong dan thao_tac_file
Huong dan thao_tac_fileHuong dan thao_tac_file
Huong dan thao_tac_file
 
BÀI 11: TỆP VÀ QUẢN LÍ TỆP
BÀI 11: TỆP VÀ QUẢN LÍ TỆPBÀI 11: TỆP VÀ QUẢN LÍ TỆP
BÀI 11: TỆP VÀ QUẢN LÍ TỆP
 
Bài 11: Tệp và quản lí tệp
Bài 11: Tệp và quản lí tệpBài 11: Tệp và quản lí tệp
Bài 11: Tệp và quản lí tệp
 
Tin11 chuong 05 bai 15
Tin11 chuong 05 bai 15Tin11 chuong 05 bai 15
Tin11 chuong 05 bai 15
 
04 02-2015 tep.ppt
04 02-2015 tep.ppt04 02-2015 tep.ppt
04 02-2015 tep.ppt
 
File
FileFile
File
 
Tin học lớp 6
Tin học lớp 6Tin học lớp 6
Tin học lớp 6
 
Tin11 bai16-giao an
Tin11 bai16-giao anTin11 bai16-giao an
Tin11 bai16-giao an
 
Bai18 bai tap voi tep - tin 11
Bai18  bai tap voi tep - tin 11Bai18  bai tap voi tep - tin 11
Bai18 bai tap voi tep - tin 11
 
tin học lớp 6
tin học lớp 6tin học lớp 6
tin học lớp 6
 
Bai 15
Bai 15Bai 15
Bai 15
 
Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11
 
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
 
Le ngoc trien tin 10-chuong2-bài 11
Le ngoc trien  tin 10-chuong2-bài 11Le ngoc trien  tin 10-chuong2-bài 11
Le ngoc trien tin 10-chuong2-bài 11
 
20 lenh linux
20 lenh linux20 lenh linux
20 lenh linux
 
Linux và mã nguồn mở
Linux và mã nguồn mởLinux và mã nguồn mở
Linux và mã nguồn mở
 
Bài 11
Bài 11Bài 11
Bài 11
 
Cau hoi tin 11 hk2
Cau hoi tin 11 hk2Cau hoi tin 11 hk2
Cau hoi tin 11 hk2
 
NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11
NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11
NGUYEN NGOC LOC LOP 10 CHUONG 2 BAI 11
 

Destacado

Thuat nen huffman_3272
Thuat nen huffman_3272Thuat nen huffman_3272
Thuat nen huffman_3272Nhut Yen Dang
 
BOLETIN DE CALIFICACIONES Y ARQUEO DE PLAN DE NEGOCIO
BOLETIN  DE CALIFICACIONES Y ARQUEO  DE   PLAN  DE  NEGOCIOBOLETIN  DE CALIFICACIONES Y ARQUEO  DE   PLAN  DE  NEGOCIO
BOLETIN DE CALIFICACIONES Y ARQUEO DE PLAN DE NEGOCIOHektor Hoyos
 
Magic Designs - Business Profile
Magic Designs - Business ProfileMagic Designs - Business Profile
Magic Designs - Business Profilepranavgharat123
 

Destacado (6)

Thuat nen huffman_3272
Thuat nen huffman_3272Thuat nen huffman_3272
Thuat nen huffman_3272
 
Technology use plan
Technology use planTechnology use plan
Technology use plan
 
BOLETIN DE CALIFICACIONES Y ARQUEO DE PLAN DE NEGOCIO
BOLETIN  DE CALIFICACIONES Y ARQUEO  DE   PLAN  DE  NEGOCIOBOLETIN  DE CALIFICACIONES Y ARQUEO  DE   PLAN  DE  NEGOCIO
BOLETIN DE CALIFICACIONES Y ARQUEO DE PLAN DE NEGOCIO
 
Geometry Vocabulary and Formulas
Geometry Vocabulary and FormulasGeometry Vocabulary and Formulas
Geometry Vocabulary and Formulas
 
Lus
LusLus
Lus
 
Magic Designs - Business Profile
Magic Designs - Business ProfileMagic Designs - Business Profile
Magic Designs - Business Profile
 

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

Similar a Sinh vienit.net --01 - on tap xu ly file - c++-2 (9)

Oop 13
Oop 13Oop 13
Oop 13
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)
 
Digital forensics - Bulk Extractor
Digital forensics - Bulk ExtractorDigital forensics - Bulk Extractor
Digital forensics - Bulk Extractor
 
Bài tập thực hành C#
Bài tập thực hành C#Bài tập thực hành C#
Bài tập thực hành C#
 
Session 21
Session 21Session 21
Session 21
 
Session 21
Session 21Session 21
Session 21
 
Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và output
 
P2
P2P2
P2
 
File trong c_
File trong c_File trong c_
File trong c_
 

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

  • 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. 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. 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. 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. 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. 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. 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