Đọc/ghi File trong C++

79
Lập trình C++

Việc đọc / ghi File trong C++ giữ vai trò cực kỳ quan trọng, đặc biệt là với các bạn học sinh tham dự các kỳ thi chọn học sinh giỏi bộ môn Tin học. Cho tới hiện tại các kỳ thi chọn học sinh giỏi môn Tin học tại Việt Nam sử dụng chương trình chấm thi Themis – Chính vì vậy, các dữ liệu của thuật toán được chấm dựa trên các bộ test với các tệp .INP và .OUT. Công việc bắt buộc là các bạn học sinh cần phải nắm vững cách ghi tệp IN và OUT để thực hiện bài toán của mình. Xin mời các bạn tham khảo trong video về vấn đề này trong video dưới đây

Với việc ghi và đọc file chúng ta có thể sử dụng một trong 2 cách:

Cách 1: Sử dụng thư viện fstream

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream fin;
    ofstream fout;
    int a, b, Tong = 0, Tich = 0;
    fin.open("Tong.INP",ios::in);
    fout.open("Tong.OUT",ios::out);
    fin>>a;
    fin>>b;
    Tong=a+b;
    Tich=a*b;
    fin.close();
    fout<<Tong<<endl;
    fout<<Tich;
    fout.close();
    return 0;
}

Cách 2: Sử dụng Hàm freopen

#include <iostream>
using namespace std;
int main() {
    int a;
    freopen("TongChuSo.INP","r",stdin);
    freopen("TongChuSo.OUT","w",stdout);
    cin >> a;
    int c = a % 10;
    int d = a / 10;
    cout << c + d;
    return 0;
}

Lưu ý:

– Một trong những đặc điểm của việc đọc file .INP (file dữ liệu vào) đó là dù bạn sử dụng cách nào trong 2 cách trên thì dữ liệu sẽ được C++ đọc theo hàng. Với cách thứ hai việc bạn sử dụng cin để đọc dữ liệu trong file dữ liệu và dùng cout để ghi dữ liệu trực tiếp vào file kết quả .COUT. Còn với cách sử dụng thư viện fstream thì khi đọc dữ liệu bạn cần dùng ifstream, còn khi ghi dữ liệu thì bạn cần sử dụng ofstream. Qua đánh giá trên có thể thấy sử dụng cách 2 sẽ tiện hơn và chương trình cũng đỡ tốn tài nguyên hơn khi phải khai thác thêm thư viện fstream

– Tuy nhiên, với cách đọc file theo cách 2 thì bạn chỉ có thể tìm thấy kiết quả trong file .OUT – Đây cũng là điều bất lợi nếu bạn muốn xem kết quả trực tiếp. 

Qua 2 nhận xét trên, chúng ta thấy rằng: Nếu sử dụng cách 2, bạn sẽ có chương trình gọn gàng và chuyên nghiệp hơn. Đặc biệt nếu bạn tham dự các kỳ thi chọn học sinh giỏi môn Tin học thì tốt nhất là nên sử dụng cách 2./.