Yo~ Trong bài này chúng ta sẽ cùng nhau tìm hiểu cách C++ tương tác với các file như thế nào nhé. Let’s go!

Giới thiệu qua về File I/O

Cũng giống với I/O bình thường thôi, ở đây chúng ta có 3 lớp cần quan tâm: ifstream, ofstream và fstream. Việc sử dụng như thế nào thì cùng tìm hiểu phía dưới nhé!

Ghi file

Để ghi dữ liệu vào file, các bạn dùng thư viện fstream

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

int main() {
	
	//chọn file sample.txt để ghi vào
    ofstream outf("sample.txt");
 
    //nếu không mở được file thì xuất lỗi
    if (!outf)
    {
        //Xuất lỗi với cerr
        cerr << "Khong the mo file!" << endl;
        exit(1);
    }
 
    //Viết vài dòng gì đó
    outf << "Dong dau tien" << endl;
    outf << "Dong thu 2" << endl;
 
	return 0;
}

Nếu dùng Visual Studio các bạn vào thư mục project sẽ xuất hiện 1 file sample.txt cùng cấp với thư mục Debug với nội dung:

	Dong dau tien
	Dong thu 2

Đơn giản đúng không nào!

Đọc file

Chúng ta sẽ đọc file vừa tạo trên console như sau:

#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
 
int main()
{
    using namespace std;
 
    //sử dung ifstream
    ifstream inf("sample.txt");
 
    //xuất lỗi khi không mở được file.
    if (!inf)
    {
        cerr << "khong the mo file!" << endl;
        exit(1);
    }
	
	//trong khi vẫn còn đọc được
    while (inf)
    {
        
        string strInput;
        getline(inf, strInput);
        cout << strInput << endl;
    }
    
    return 0;
}

Và màn hình console khi chạy sẽ xuất ra 2 dòng trong file của chúng ta.

Open và Close

Ngoài cách truyền tên file trực tiếp vào, chúng ta có thể dùng hàm open()

  	//ofstream outf("sample.txt");
  	ofstream outf;
  	outf.open("sample.txt");

Và trong trường hợp bạn muốn đóng file lại sau khi thao tác xong (và không muốn chờ đến khi chương trình tự đóng) các bạn dùng hàm close()

  	outf.close();

Sau khi đóng bằng close, các bạn vẫn có thể dùng open để mở file ra thao tác tiếp như bình thường nếu muốn.

Một số mode đọc ghi file

C++ hỗ trợ chúng ta 1 số mode sau:

Ví dụ mới mode app trong trường hợp các bạn mở 1 file đã có dữ liệu và muốn ghi tiếp vào file đó thì chúng ta phải dùng mode này (bằng không chúng ta sẽ ghi đè lên toàn bộ dữ liệu cũ). Để sử dụng mode các bạn thêm tham số mode như sau:

  //sử dụng mode app (append)
	ofstream outf("sample.txt", ios::app);

Tổng kết

Vậy là chúng ta đã biết cách đọc ghi file trong C++, các bạn nhớ chú ý ghi nhớ để tận dụng trong quá trình code nhé. Pie~