Ngôn ngữ C++ hỗ trợ thư viện <fstream> để thao tác với tập tin (file). Có những thao tác trên tập tin như:
- Mở tập tin
- Đọc/ghi tập tin
- Đóng tập tin
1. Lập trình với file sử dụng thư viện <fstream> trong C++
Cần khai báo thư viện <fstream> để lập trình với file trong C++:
#include <fstream>
Thư viện <fstream> có 3 lớp (class) thao tác với file là:
- ifstream là lớp biểu diễn cho input stream, dùng để đọc dữ liệu từ file.
- ofstream là lớp biểu diễn cho outpust stream, dùng để ghi dữ liệu vào file.
- fstream là lớp biểu diễn cho cả input và output stream. Với fstream, chúng ta có thể tạo file, đọc hoặc ghi dữ liệu cho file.
Mở một file như thế nào?
Trước khi thao tác với file, việc đầu tiên là cần mở file. Nếu cần ghi dữ liệu cho file, cần mở file bằng cách sử dụng lớp fstream hoặc ofstream. Nếu cần đọc dữ liệu từ file, cần mở file bằng cách sử dụng lớp fstream hoặc ifstream.
Cả 3 lớp fstream, ofstream và ifstream đều có hàm open() để mở file. Cú pháp của hàm open() như sau:
open (file_name, mode);
Tham số file_name là đường dẫn của file cần mở.
Tham số mode là tham số tùy chọn. Tham số này có các giá trị với ý nghĩa như sau:Giá trị Ý nghĩa ios:: app Thêm dữ liệu vào cuối file ios::ate Đặt vị trí con trỏ ở cuối file khi mở file ios::in Mở file và cho phép đọc dữ liệu (mode mặc định của ifstream) ios::out Mở file và cho phép ghi dữ liệu (mode mặc định của ofstream) ios::binary Dùng để mở file nhị phân ios::trunc Xóa tất cả dữ liệu khi mở file
Một số hàm hỗ trợ khi thao tác với file
Hàm eof(): trả về true khi con trỏ đã trỏ tới cuối file và false thì ngược lại.
Hàm is_open(): kiểm tra file đã được mở hay chưa. Hàm is_open() trả về true nếu mở thành công và false nếu thất bại.
Hàm close(): hàm đóng file. Sau khi đọc hoặc ghi file thì nên đóng file lại.
fstream data_file;
data_file.open("C:\\data.txt", ios::app | ios::out | ios::in);
if(data_file.is_open()){
//Đọc file khi mở file thành công
while(!data_file.eof())
{
//code block
}
}else{
//Mở file thất bại
cout<<"Mo file that bai";
}
data_file.close();//đóng file khi đọc/ghi file xong
2. Chương trình C++ minh họa thao tác với tập tin
/*Steps to manipulate file
Step 1: Open file
Step 2: Read/write file
Step 3: Close file
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string a;
fstream data_file;
string line;
cout<<"================Read file================="<<endl;
data_file.open("C:\\data.txt", ios::app | ios::out | ios::in);
//Read file
while (!data_file.eof()) {
getline(data_file,line);
cout<<line<<endl;
}
data_file.close();
//Write file
cout<<"================Write file================="<<endl;
data_file.open("C:\\data.txt", ios::app | ios::out | ios::in);
getline(cin, line);
data_file<<'\n'<<line;
data_file.close();
//Read file after write file
cout<<"================Read file after write file================="<<endl;
data_file.open("C:\\data.txt", ios::app | ios::out | ios::in);
while (!data_file.eof()) {
getline(data_file,line);
cout<<line<<endl;
}
data_file.close();
system("pause");
}
Kết quả
================Read file=================
Welcome to introduction to programming!
Programming language C++
================Write file=================
Hello all!
================Read file after write file=================
Welcome to introduction to programming!
Programming language C++
Hello all!
Các bạn nhớ mở file để đọc/ghi file. Sau đó thì phải đóng file lại.