Fstream trong c++ là gì

Thao tác với file là việc không thể thiếu đối với bất kì lập trình viên nào. Ví vậy, để giúp các bạn bắt đầu làm quen thao tác với file trong C++, trong bài viết này Isinhvien sẽ giới thiệu đến các bạn cách đọc ghi file trong C++ siêu cơ bản và cực kì dễ hiểu. Cùng bắt đầu ngay bây giờ nhé!

Để sử dụng file, đầu tiên ta cần khai báo thư viện fstream với cú pháp #include<fstream>. Khi xử lí file trong C++, ta có 3 classs:

  • ifstream: là class để đọc dữ liệu đầu vào từ file
  • ofstream: là class để ghi dữ liệu vào
  • fstream: là class để đọc hoặc ghi dữ liệu, ta có thể thay thế ifstream và ofstream bằng từ khóa fstream.

Đầu tiên, để làm việc với file thì ta cần phải mở ra lên trước đã. Ta có thể sử dụng ifstream để mở file với mục đích đọc, ofstream để mở file với mục đích ghi hoặc fstream nếu bạn vừa muốn đọc, vừa muốn ghi. Ta sẽ dùng hàm open (là một thành viên của các đối tượng fstream, ifstream ofstream trong C++) để mở file với cú pháp như sau:

open(const char *ten_file, ios::che_do);

Với tham số đầu tiên xác định tên và vị trí của file được mở và tham số thứ hai của hàm định nghĩa chế độ mà file nên được mở. Các chế độ được miêu tả trong bảng sau:

Chế độMiêu tả
ios::app Chế độ Append. Tất cả output tới file đó được phụ thêm vào cuối file đó
ios::ate Mở một file cho output và di chuyển điều khiển read/write tới cuối của file
ios::in Mở một file để đọc
ios::out Mở một file để ghi
ios::trunc Nếu file này đã tồn tại, nội dung của nó sẽ được cắt (truncate) trước khi mở file
Các chế độ khi mở file

Ta cũng có thể cùng lúc sử dụng hai hoặc nhiều chế độ khi mở file.

Ví dụ:

fstream Isv; Isv.open("file.txt", ios::out | ios::in ); // Mở file vừa đọc vừa ghi

Đóng file trong C++

Khi ta không cần làm việc với file nữa, thì ta cần đóng chúng lại với hàm close(), một thành viên của các đối tượng fstream, ifstream và ofstream trong C++:

Ví dụ:

fstream Isv; Isv.open("file.txt", ios::out | ios::in ); .... .... Isv.close(); // Đóng file Isv

Đọc và ghi file trong C++

Bình thường khi chúng ta lấy dữ liệu từ bàn phím ta sẽ sử dụng câu lệnh cin >> và in dữ liệu ra màn hình console ta dùng cout <<, và tương tự với đọc dữ liệu từ file và ghi dữ liệu vào file ta chỉ cần thay cin thành tên file cần đọc dữ liệu, và thay cout thành tên file cần ghi dữ liệu vào. Nếu chỉ dùng file >> str; thì ta chỉ đọc được chuỗi cho tới khi nó gặp dấu cách. Muốn lấy dữ liệu lấy được cả dấu cách ta dùng hàm getline (file,str);

Ví dụ:

Giả sử Isinhvien đang có một file trống output và một file input với nội dung ‘Isinhvien!!’ như hình dưới.

File input và output

Chương trình dưới đây sẽ in dữ liệu ở file input và ghi ‘Chuc cac ban thanh cong‘ vào file output.

#include <iostream> #include <fstream> using namespace std; int main(){     fstream input("input.txt");     fstream output;     output.open("output.txt", ios::out );     string str;     input>>str; // lấy giá trị biến str từ file input     cout<<str; // in str ra màn hình console     output<<"Chuc cac ban thanh cong!!"; //in vào file output     input.close(); //đóng file input     output.close(); //đóng file output     return 0; }

Kết quả trên màn hình:

Isinhvien!!

Kết quả trên 2 file

File input và output sau khi thực thi chương trình

Hi vọng sau bài viết này thì các bạn sẽ thành thạo hơn về các thao tác đóng, mở và đọc ghi file trong C++ nhé! Nếu thấy bài viết này của Isinhvien hay và bổ ích thì hãy chia sẻ nó đến với bạn bè của mình để ủng hộ cho Isinhvien và giúp Isinhvien ngày càng phát triển hơn nhé! Chúc các bạn thành công!

Bài viết khác liên quan đến thao tác file c++
  • Tổng hợp các hàm xử lí file trong C++

Tải thêm tài liệu liên quan đến bài viết Fstream trong c++ là gì