FILE
nhiều. Để sử dụng được fstream
bạn cần khai báo #include<fstream>
. Ngoài ra, C++ còn cung cấp thêm 2 đối tượng khác là ifstream
và ofstream
chỉ chuyên biệt cho việc đọc file và ghi file trong khi fstream
có thể thực hiện được cả 2 việc này. Chính vì vậy, bài viết này sẽ hướng dẫn các bạn một cách vắn tắt các thao tác cơ bản với fstream
trong C++.1. Tạo đối tượng fstream để đọc/ghi file. Việc đọc/ghi file sẽ được thực hiện thông qua đối tượng này.
Khai báo: fstream <tênbiến>;
2. Dùng phương thức
open()
để mở một file.Cú pháp:
<tênbiến>.open(<đường dẫn>,<chế độ mở>);
Hoặc có thể vừa khai báo biến vừa mở file luôn.
fstream <tênbiến>(<đường dẫn>,<chế độ mở>);
Đường dẫn có thể là tương đối (tính từ file exe khi được build ra) hoặc tuyệt đối (tính từ ổ đĩa gốc).
Chế độ mở có nhiều loại:
Chế độ mở | Ý nghĩa |
---|---|
ios::in | Mở file ở chế độ đọc |
ios::out | Mở file ở chế độ ghi |
ios::app | Mở file chế độ ghi thêm vào |
ios::ate | Mở file để đọc/ghi từ cuối file |
ios::trunc | Tạo đè file mới hoàn toàn |
ios::nocreate | Mở một file phải tồn tại |
ios::noreplace | Tạo file mới chưa tồn tại |
ios::binary | Mở file chế độ nhị phân |
ios::text | Mở file chế độ văn bản |
Có thể kết hợp nhiều chế độ bằng toán tử
|
.Ví dụ:
fstream file("data/text.txt", ios::in | ios::out);
3. Dùng toán tử
>>
để đọc số và chuỗi không chứa dấu cách, dùng phương thức getline()
để đọc chuỗi có dấu cách.Cú pháp: <tênbiến> >> <tênbiếnlưudữliệu>;
Ví dụ:
int x; fstream file("data/text.txt", ios::in); if (file.is_open()) file >> x;
Phương thức
getline()
dùng cho chuỗi kiểu char*
.Cú pháp:
<tênbiến>.getline(<biếnlưudữliệu>,<kíchthước>,<kýtựkếtthúc>);
Ký tự kết thúc mặc định là \n
, nếu thích thì bạn có thể dùng ký tự khác làm ký tự kết thúc.4. Dùng toán tử
<<
để ghi file văn bản.Cú pháp: <tênbiến> << <tênbiếndữliệu>;
Dữ liệu sẽ được ghi vào file thông qua biến fstream.
5. Dùng phương thức
get()
để đọc 1 ký tự, dùng phương thức put()
để ghi một ký tự.6. Dùng phương thức
read()
và write()
để đọc/ghi tệp nhị phân.Cú pháp:
<tênbiến>.read(char * address, int size);
Cú pháp này có thể hiểu là đọc từ file vào địa chỉ address một kích thước size byte.
<tênbiến>.write(char* address, int size);
Ghi dữ liệu từ địa chỉ address
vào file với kích thước size
byte.7. Một số phương thức kiểm tra quan trọng:
is_open()
: Kiểm tra xem file đã mở thành công chưa. Nên kiểm tra điều này trước khi thực hiện bất kỳ thao tác nào với file.eof()
: Kiểm tra xem con trỏ file đã đọc đến cuối file chưa.close()
: Đóng file. Bắt buộc phải có thao tác này sau khi làm việc với file.
hay quá ad ơi
Trả lờiXóatóm tắt cực mạnh yêu ad
Trả lờiXóa