Các kỹ thuật lập trình với tập tin (file) trong C++

Đây là bài 43/43 bài của series môn học Nhập môn lập trình

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>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:: appThêm dữ liệu vào cuối file
ios::ateĐặt vị trí con trỏ ở cuối file khi mở file
ios::inMở file và cho phép đọc dữ liệu (mode mặc định của ifstream)
ios::outMở file và cho phép ghi dữ liệu (mode mặc định của ofstream)
ios::binaryDùng để mở file nhị phân
ios::truncXó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.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Dòng (stream) là gì? Tập tin (file) và phân loại tập tin trong lập trình
Chia sẻ trên mạng xã hội:

Để lại một bình luận

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.