STDIO
Tìm kiếm gần đây

    Nội dung

    Đọc Ghi File Cơ Bản Với fstream

    04/08/2014
    Đọc Ghi File Cơ Bản Với fstream
    Sử dụng fstream để đọc file, ghi file, xử lý file đơn giản trong C++.

    Dường như không có phần mềm nào không thao tác với file, trong bài viết này, tôi sẽ hướng dẫn nhanh việc thao tác lưu trữ và lấy dữ liệu từ file thông qua thư viện C++ fstream.

    Môi trường và thư viện fstream

    Các đối tượng, hàm dùng trong bài này được viết và thực thi tốt với Visual Studio 2019 Community, các thư viện C++ bao gồm fstream, iostreamstring. Để thao tác với file trong C++ ta có thể dùng ifstream cho việc đọc file, ofstream cho việc ghi file hoặc fstream cho cả 2 mục đích, trong trường hợp này tôi dùng fstream.

    Đọc dữ liệu từ file

    Giả sử ta có file input.txt với nội dung như sau

    C++ la ngon ngu lap trinh co the tao ra hieu suat cao cho chuong trinh neu co 1 nen tang lap trinh tot.

    Chương trình sau sẽ đọc dữ liệu trong file input.txt và thể hiện ra màn hình

    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    	fstream f;
    	f.open("input.txt", ios::in);
    
    	string data;
    	getline(f, data);
    
    	f.close();
    
    	cout << data;
    }

    Như code trên ta cần thực hiện các bước như mở file, đọc dữ liệu, đóng file sau đó sử dụng dữ liệu tùy vào từng trường hợp (trong trường hợp này chỉ là in dữ liệu ra màn hình).

    Tóm tắt các bước thực hiện

    1. Chèn thư viện cần thiết để xử lý file vào code (dòng 1, 2, 3).
    2. Mở file (dòng 10 và 11), lưu ý rằng có mở file thì phải có đóng file (dòng 15) sau khi đọc dữ liệu xong với input.txt là tên file cần đọc, ios::in là mục đích đọc file.
    3. Sau khi mở file ta sẽ đọc dữ liệu từ file vào string data (dòng 12, 13). Lưu ý sẽ có nhiều vấn đề nảy sinh ở giai đoạn này, getline chỉ lấy 1 dòng trên file, nếu file có nhiều dòng ta xem phần dưới của bài.
    4. Đóng file, điều này cần lưu ý vì sẽ rất nhiều bạn chưa có kinh nghiệm sẽ dễ quên (dòng 15).

    Đọc file input.txt có nhiều dòng

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
    	fstream f;
    	f.open("input.txt", ios::in);
    
    	string data;
    
    	string line;
    	while (!f.eof())
    	{
    		getline(f, line);
    		data += line;
    	}
    
    	f.close();
    
    	cout << data;
    }

    f.eof() sẽ kiểm tra xem đã kết thúc file chưa? Nếu chưa, ta tiếp tục lấy dữ liệu từ file vào line.

    Ghi dữ liệu vào file

    #include <iostream>
    #include <string>
    
    // 1. Thêm thư viện fstream xử lý file vào
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
    	// 2. Mở file
    	fstream f;
    	f.open("output.txt", ios::out);
    
    	// 3. Ghi dữ liệu vào file, trường hợp này ta có data là dữ liệu
    	string data = "Site: www.stdio.vn\nHo Ten: La Kien Vinh\nCong Viec: Dao Tao Lap Trinh Vien";
    	f << data;
    
    	// 4. Đóng file
    	f.close();
    }

    Với những lệnh trên ta cần thực hiện bước 1. 2. và 4. như một thủ tục, giai đoạn 3. là giai đoạn chính ta sẽ lưu dữ liệu mà ta có vào file.

    Tóm tắt các bước thực hiện

    1. Chèn thư viện cần thiết để xử lý file vào codes (dòng 5).
    2. Mở file (dòng 12 và 13), lưu ý rằng có mở file thì phải có đóng file. output.txt là tên file ta sẽ lưu dữ liệu vào ios::out là diễn đạt mục đích ta mở file là muốn ghi file.
    3. Sau khi mở file ta sẽ ghi dữ liệu vào file một cách đơn giản (dòng 17). Lưu ý hướng của << nó mang ý nghĩa rằng, luồng dữ liệu sẽ đi từ string data vào file f.
    4. Đóng file, điều này cần lưu ý vì sẽ rất nhiều bạn chưa có kinh nghiệm sẽ dễ quên (dòng 20).

    Một số vấn đề cần lưu ý

    File được lưu ở đâu?

    Với đường dẫn tuyệt đối, thì bạn có thể đặt file hoặc tìm file tại đường dẫn tuyệt đối đó.

    Với đường dẫn tương đối (trường hợp này chúng ta sử dụng nhiều)

    • Nếu bạn thực thi chương trình thông qua Visual Studio file sẽ tại đường dẫn tương đối tính từ thư mục chứa project (*.vcxproj), hoặc Working Directory do bạn tùy chỉnh. Trong trường hợp bài viết này dành cho người mới học lập trình, bạn không nên tìm hiểu sâu lúc này.
    • Nếu bạn thực thi chương trình thông qua việc tự gọi thực thi chương trình .exe của bạn thông qua click chuột hoặc enter thì sẽ là đường dẫn tương đối tính từ thư mục chứa file .exe.

    Có thể dùng kiểu char, short, int, float, double thay vì string?

    Bạn có thể thay thế các kiểu dữ liệu cần thiết để đọc ghi thay vì chỉ dùng string. Ví dụ trong trường hợp ghi vào file 1 giá trị kiểu int.

    int data = 6; // Thay vì string data = "chuoi du lieu"
    f << data;

    Xử lý file còn nhiều vấn đề phức tạp, bạn hãy làm quen với điều này trước.

    Tham khảo

    Thảo luận

    Đăng nhập

    Bài viết liên quan

    Căn Bản Về Đọc Và Ghi File Trong Ngôn Ngữ C++

    Căn Bản Về Đọc Và Ghi File Trong Ngôn Ngữ C++

    Đọc và ghi file là những kỹ thuật quan trọng và sử dụng rất nhiều trong lập trình. Hầu như không có một ứng dụng nào có giá trị sử dụng mà không sử dụng đến những kĩ ...

    Nguyễn Minh Hiếu

    22/07/2015

    Đọc Ghi File Cơ Bản Trong C#

    Đọc Ghi File Cơ Bản Trong C#

    Hướng dẫn đọc và ghi file cơ bản sử dụng đối tượng File trong C#. Nhờ có các hàm hỗ trợ nên các thao tác đọc ghi dữ liệu trên file trong C# được thực hiện một cách nhanh ...

    Bùi Trung Hiếu

    07/04/2016

    Đọc Và Ghi File Trong Python

    Đọc Và Ghi File Trong Python

    Đọc và ghi file text với Python thông qua code ví dụ với các mode cơ bản và hữu ích.

    Ryan Lê

    28/03/2015

    Đọc Ghi Tất Cả Các Định Dạng Ảnh Với FreeImage Trong C++

    Đọc Ghi Tất Cả Các Định Dạng Ảnh Với FreeImage Trong C++

    Mỗi định dạng ảnh (*.jpg, *.png, *.tga, *.bmp ...) đều có những quy chuẩn về lưu trữ của chính bản thân định dạng ảnh đó. Vì vậy, ứng với mỗi định dạng ta phải có các ...

    Vũ Quang Huy

    28/09/2014

    Cấu Trúc File CSV và Cách Đọc - Ghi File CSV

    Cấu Trúc File CSV và Cách Đọc - Ghi File CSV

    File .csv là gì, cấu trúc file CSV - cách tạo, đọc ghi file csv với các trình soạn thảo. Sử dụng C# để đọc ghi file CSV.

    C# for AutomationKiến Thức

    02/06/2015

    Xử Lý File Trong PHP

    Xử Lý File Trong PHP

    Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều không thể tránh khỏi. PHP có thể thao tác và xử lí dữ liệu thông qua quá trình nhận và đọc dữ liệu ...

    Tran Khanh Nguyen

    12/05/2017

    Tìm Hiểu Về fstream

    Tìm Hiểu Về fstream

    Kiến thức về file là một trong những kiến thức quan trọng đối với các lập trình viên. Bài viết này trình bày chi tiết về 2 loại file là file nhị phân và file text, cũng ...

    Lê Minh Trung

    11/05/2015

    Định Dạng Ảnh Bitmap - Giới Thiệu Và Các Thao Tác Cơ Bản

    Định Dạng Ảnh Bitmap - Giới Thiệu Và Các Thao Tác Cơ Bản

    Trong đời thường, bạn sẽ gặp các file ảnh có định dạng .PNG, .JPG, .TGA, .BMP,...Với những lập trình viên đặc biệt là trong lập trình games, đồ họa,... cũng sẽ phải ...

    Phan Tấn Phúc

    13/09/2017

    Trích Xuất Dữ Liệu Từ File Excel Bằng Python - Phần 2: Ghi Dữ Liệu

    Trích Xuất Dữ Liệu Từ File Excel Bằng Python - Phần 2: Ghi Dữ Liệu

    Đọc và ghi dữ liệu từ các file là điều chắc chắn bạn sẽ gặp phải trong quá trình học tập và làm việc. Thông qua bài viết này tôi muốn gửi đến các bạn đọc một cách để ...

    Ryan Lê

    18/03/2015

    Lưu Trữ Dữ Liệu Trong Android Với Unity

    Lưu Trữ Dữ Liệu Trong Android Với Unity

    Hướng dẫn đọc và ghi file với đường dẫn Application.dataPath, Application.streamingAssetPath, Application.persistentDataPath, Application.temporaryCachePath. Đây là 4 ...

    Bùi Trung Hiếu

    04/04/2016

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    [email protected]

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020