Fstream 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é!

Fstream là gì

Để sử dụng file, đầu tiên ta cần khai báo thư viện fstream với cú pháp #include. 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::appChế độ Append. Tất cả output tới file đó được phụ thêm vào cuối file đó
ios::ateMở một file cho output và di chuyển điều khiển read/write tới cuối của file
ios::inMở một file để đọc
ios::outMở một file để ghi
ios::truncNế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

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

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.

Fstream là gì
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 #include 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<Kết quả trên màn hình:


Isinhvien!!

Kết quả trên 2 file

Fstream là gì
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++

Đối tượng fstream cung cấp nhiều phương thức để đọc ghi file nhưng tiện lợi và an toàn hơn con trỏ FILE nhiều. Để sử dụng được fstream bạn cần khai báo #include. 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 ;

2. Dùng phương thức open() để mở một file.

Cú pháp:

.open(<đường dẫn>,);

Hoặc có thể vừa khai báo biến vừa mở file luôn.

fstream (<đường dẫn>,);

Đườ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::inMở file ở chế độ đọc
ios::outMở file ở chế độ ghi
ios::appMở file chế độ ghi thêm vào
ios::ateMở file để đọc/ghi từ cuối file
ios::truncTạo đè file mới hoàn toàn
ios::nocreateMở một file phải tồn tại
ios::noreplaceTạo file mới chưa tồn tại
ios::binaryMở file chế độ nhị phân
ios::textMở 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: >> ; 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:

.getline(,,);

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: << ; 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:

.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.

.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.


Page 2

home lập trình tản mạn about