Cách đọc ghi file trong c++

Đọc và ghi file để phục vụ lưu trữ dữ liệu cho bài toán giúp quá trình test chương trình diễn ra nhanh chóng và sử dụng lại được những lần sau

Bạn có thể tham khảo thêm Cách đọc ghi file trong pascal

1. Đọc và ghi file trong Visual Studio C++

Mình không rõ trong Visual Studio C++ có sự khác biệt như thế nào nhưng mình không thể đọc và ghi file trong Visual Studio C++  bằng hàm Freopen như trong Codeblock. Chính vì thế tùy thuộc vào nhu cầu mà mình sẽ có cách đọc file khác nhau.

Để đọc và ghi file chúng ta sẽ có 3 thao tác chính là:

  • Mở file
  • Xử lí trên file (bao gồm: lấy dữ liệu và ghi dữ liệu)
  • Đóng file

Sử dụng thư viện fstream #include <fstream>

a. Đọc file trong Visual Studio C++

Mở file để đọc

Trong bài viết này mình sẽ hướng dẫn bạn sử dụng ifstream để đọc và ghi file

Đầu tiên Mở file đối với loại mở để đọc file bạn sử dụng cú pháp:

ifstream <tên biến>(<tên file cần mở>);

Ví dụ:

ifstream in(“input.txt”);

Điều đó có nghĩa là mình sẽ mở file input.txt và đặt nó cái tên là in

Đọc dữ liệu từ file

Nếu bạn đã biết cách nhập dữ liệu thông thường bằng cin, thì ở đây đoc từ file khá đơn giản, bạn chỉ cần thay cin thành in thì chương trình sẽ lấy dữ liệu từ file.

Ví dụ: Đọc 2 số a, b từ file và in tổng của chúng ra màn hình.

int a, b;
in >> a >> b;
cout << "Tong "<<a+b<<endl;

Đóng file sau khi đọc xong

Để hoàn tất quá trình đọc file bạn phải đóng file để tránh các lỗi xử lí file có thể xảy ra, lúc này bạn cần dùng lệnh

<tên biến>.close():

ví dụ: in.close()

b. Ghi file trong Visual Studio C++

Ghi file trong Visual Studio C++ cũng khá giống cách đọc file, bạn chỉ việc dùng giống cout là xong.

Mở file ghi dữ liệu

Các bạn sử dụng ofstream để đọc và ghi file

Đầu tiên Mở file đối với loại mở để ghi file bạn sử dụng cú pháp:

ofstream <tên biến>(<tên file cần mở>);

Ví dụ:

ofstream out(“output.txt”);

Điều đó có nghĩa là mình sẽ mở file output.txt và đặt nó cái tên là out

Ghi dữ liệu file

Nếu bạn đã biết cách in dữ liệu ra màn hình thông thường bằng cout, thì ở đây ghi dữ liêu vào file khá đơn giản, bạn chỉ cần thay cout thành out thì chương trình sẽ ghi dữ liệu ra file.

Ví dụ: In ra màn hình dòng đầu số 1234 dòng thứ 2 “KienThuc24h”

out << 1234;
out << endl; // xuống dòng
out << "KienThuc24h";

Đóng file sau khi ghi xong

Để hoàn tất quá trình ghi file bạn phải đóng file để tránh các lỗi xử lí file có thể xảy ra, lúc này bạn cần dùng lệnh

<tên biến>.close():

ví dụ: out.close()

2. Đọc và ghi file trong Codeblock và trình chấm online

Đối với cách đọc và ghi file khi sử dụng các trình biên dịch khác như GNU GCC mà Codeblock hay các trình chấm online khác sử dụng khá đơn giản.

Bạn chỉ việc sử dụng freopen là xong.

a. Đọc file trong Codeblock và trình chấm online

Sử dụng câu lệnh sau đây ở đầu chương trình để đọc file bằng freopen

freopen("input.txt","r",stdin);

Lúc này chương trình sẽ đọc dữ liệu từ file input.txt khi bạn dùng lệnh cin

b. Ghi file trong Codeblock và trình chấm online

Sử dụng câu lệnh sau đây ở đầu chương trình để ghi file bằng freopen

freopen("output.txt","w",stdout);

Lúc này chương trình sẽ ghi dữ liệu vào file output.txt khi bạn dùng lệnh cout

c. Chương trình minh họa

Đọc thông tin từ file “input.txt”, dòng đầu tiên là số phần tử, dòng tiếp theo chứa danh sách phần tử.

Hãy xuất kết quả đọc được xuống file “output.txt”, mỗi phần tử trên 1 dòng.
Ví dụ:
input.txt
4
1  3  5   7
output.txt
1
3
5
7
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int n, x;
    cin >> n;
    while (n--)
    {
        cin >> x;
        cout << x << endl;
    }
}

 

 

2 thoughts on “Cách đọc ghi file trong c++

    • Để tiếp tục ghi file bằng freopen bạn thay “w” thành “a” nha
      ví dụ

      #include 
      #include 
      using namespace std;
      
      int main() {
          freopen("test.txt","a",stdout);
          cout <<"text output";
          return 0;
      }
      

      Còn đối với ofstream bạn sử dụng khai báo sau:
      ofstream out("test.txt", std::ofstream::app);
      ví dụ

      #include 
      #include 
      using namespace std;
      
      int main() {
          ofstream out("test.txt", std::ofstream::app);
          out <<"text output";
          return 0;
      }
      

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *