CHƯƠNG 3: LẬP TRÌNH CẤU TRÚC TRONG C++
Môi trường và thư viện fstream
Các đối tượng, phương thức dùng trong bài này được viết và thực thi tốt với Visual Studio, các thư viện C++ bao gồm fstream
, iostream
và string
.
Để thao tác với file trong C++ 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 bài viết này dùng fstream
.
Đọc dữ liệu từ file
Tạo 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 nhung do phuc tap trong lap trinh cao.
Chương trình đọc dữ liệu trong file input.txt và thể hiện ra màn hình:
#include <iostream> #include <string> #include <fstream> // (1) using namespace std; int main() { fstream f; // (2) f.open("input.txt", ios::in); // (2) string data; // (3) getline(f, data); // (3) f.close(); // (4) cout << data; }
Như code trên cần thực hiện các bước:
- Mở file bằng
f.open
. - Đọc dữ liệu từ file vào data thông qua
getline
. - Đóng file bằng
f.close
sau khi lấy dữ liệu xong.
Tóm tắt các bước đọc file với fstream
- Chèn thư viện cần thiết để xử lý file vào code
(1)
. - Mở file
(2)
với input.txt là tên file cần đọc,ios::in
với mục đích mở file là đọc file.- Lưu ý có mở file thì phải có đóng file
(4)
.
- Lưu ý có mở file thì phải có đóng file
- Sau khi mở file, tiến hành đọc dữ liệu từ file vào
string data
(3)
.- Lưu ý sẽ có nhiều vấn đề nảy sinh ở đây,
getline
chỉ lấy 1 dòng trên file, nếu file có nhiều dòng, đọc thêm phần dưới của bài.
- Lưu ý sẽ có nhiều vấn đề nảy sinh ở đây,
- Đóng file
(4)
sau khi đã đọc xong dữ liệu.
Đọc file input.txt có nhiều dòng
Tạo file input.txt với nội dung như sau:
DANH SACH MANG XA HOI: Mang xa hoi Facebook ket noi moi nguoi. Mang xa hoi Youtube chia se Video clip. Mang xa hoi Tiktok cho gioi tre.
Chương trình đọc dữ liệu trong file input.txt với nhiều dòng và thể hiện ra màn hình:
#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()) // (1) { getline(f, line); // (2) data += line; } f.close(); cout << data; }
(1)
f.eof()
kiểm tra xem đã kết thúc file chưa?(2)
nếu chưa, tiếp tục lấy dữ liệu (dòng kế tiếp) từfile
vàoline
.
Ghi dữ liệu vào file
#include <iostream> #include <string> #include <fstream> // (1) using namespace std; int main() { fstream f; // (2) f.open("output.txt", ios::out); // (2) string data = "Board: Modern C++\n" "Website: www.stdio.vn/modern-cpp\n" "Mo ta: Lap trinh C++"; // (3) f << data; // (3) f.close(); // (4) return 0; }
Tóm tắt các bước ghi file với fstream
- Chèn thư viện cần thiết để xử lý file vào code
(1)
. - Mở file
(2)
với input.txt là tên file cần đọc,ios::out
với mục đích mở file là ghi file.- Lưu ý có mở file thì phải có đóng file
(4)
.
- Lưu ý có mở file thì phải có đóng file
- Sau khi mở file, tiến hành ghi dữ liệu từ biến
string data
vào file(3)
. - Đóng file
(4)
sau khi đã ghi xong dữ liệu vào file. - – Trong trường file tồn tại và muốn ghi tiếp nối dung vào nội dung đã có.
– Ta sử dụng thêm ios::app sau ios::out
– dataFile.open(“demo.txt”, ios::out | ios::app);
Một số vấn đề cần lưu ý
File được lưu ở đâu?
Với đường dẫn tuyệt đối
Có thể đặt file hoặc tìm file tại đường dẫn tuyệt đối đó. Ví dụ file được lưu tại D://data/input.txt
. thì đường dẫn truyền vào hàm f.open
là D://data/input.txt
.
f.open("D://data/input.txt, ios::in);
Với đường dẫn tương đối
Nếu thực thi chương trình thông qua Visual Studio, đường dẫn tương đối tính từ thư mục chứa project (*.vcxproj), hoặc Working Directory tùy chỉnh. Do đó nếu đặt file chung thư mục chứa file *.vcxproj thì có thể sử dụng đường dẫn tương đối la "input.txt"
hoặc "./input.txt"
.
f.open("input.txt, ios::in);
Nếu thực thi chương trình bằng cách tự gọi thực thi chương trình .exe (click chuột hoặc enter) thì đường dẫn tương đối tính từ thư mục chứa file .exe.
* Trường hợp người mới học lập trình không nên tìm hiểu sâu vào lúc này.
Có thể dùng kiểu char, short, int, float, double thay vì string?
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 vi string data = "chuoi du lieu" f << data;
Không có nhận xét nào:
Đăng nhận xét