Hướng dẫn mở, ghi, đóng file trong C++ chi tiết nhất

Xử lý tệp trong C ++ là gì?

Tệp lưu trữ dữ liệu vĩnh viễn trong thiết bị lưu trữ. Với xử lý tệp, kết quả đầu ra từ một chương trình có thể được lưu trữ trong một tệp. Các thao tác khác nhau có thể được thực hiện trên dữ liệu khi ở trong tệp.

Luồng là một phần trừu tượng của một thiết bị nơi các hoạt động đầu vào / đầu ra được thực hiện. Bạn có thể thể hiện một luồng dưới dạng đích hoặc nguồn của các ký tự có độ dài không xác định. Điều này sẽ được xác định bởi cách sử dụng của họ. C ++ cung cấp cho bạn một thư viện đi kèm với các phương thức xử lý tệp. Hãy để chúng tôi thảo luận về nó.

Thư viện fstream

Thư viện fstream cung cấp cho các lập trình viên C ++ ba lớp để làm việc với tệp. Các lớp này bao gồm:

  • ofstream – Lớp này đại diện cho một luồng đầu ra. Nó được sử dụng để tạo tệp và ghi thông tin vào tệp.
  • ifstream – Lớp này đại diện cho một luồng đầu vào. Nó được sử dụng để đọc thông tin từ các tệp dữ liệu.
  • fstream – Lớp này thường đại diện cho một luồng tệp. Nó đi kèm với khả năng ofstream / ifstream. Điều này có nghĩa là nó có khả năng tạo tệp, ghi vào tệp, đọc từ tệp dữ liệu.

Hình ảnh sau đây làm cho nó đơn giản để hiểu:

Thư viện fstream
Thư viện fstream

Để sử dụng các lớp trên của thư viện fstream, bạn phải đưa nó vào chương trình của mình dưới dạng tệp tiêu đề. Tất nhiên, bạn sẽ sử dụng chỉ thị tiền xử lý #include. Bạn cũng phải bao gồm tệp tiêu đề iostream.

>> Xem thêm: hướng dẫn tạo id apple trên máy tính chi tiết

Cách mở tệp

Trước khi thực hiện bất kỳ thao tác nào trên tệp, trước tiên bạn phải mở tệp đó. Nếu bạn cần ghi vào tệp, hãy mở tệp đó bằng các đối tượng fstream hoặc ofstream. Nếu bạn chỉ cần đọc từ tệp, hãy mở tệp đó bằng đối tượng ifstream.

Ba đối tượng, đó là fstream, ofstream và ifstream, có hàm open () được định nghĩa trong chúng. Hàm sử dụng cú pháp sau:

open (tên_tệp, chế độ);
  • Tham số file_name biểu thị tên của tệp cần mở.
  • Tham số chế độ là tùy chọn. Nó có thể nhận bất kỳ giá trị nào sau đây:
Giá trị Sự mô tả
ios :: ứng dụng Chế độ Nối. Đầu ra được gửi đến tệp được nối vào tệp đó.
ios :: đã ăn Nó mở tệp cho đầu ra sau đó di chuyển điều khiển đọc và ghi đến cuối tệp.
ios :: trong Nó mở tệp để đọc.
ios :: hết Nó mở tệp để ghi.
ios :: thân cây Nếu tệp tồn tại, các phần tử tệp phải được cắt bớt trước khi mở.

Có thể sử dụng hai chế độ cùng một lúc. Bạn kết hợp chúng bằng cách sử dụng dấu | (HOẶC) toán tử.

Ví dụ 1

#include <iostream> 
#include <fstream> 
using namespace std; 
int main () { 
	fstream my_file; 
	my_file.open ("my_file", ios :: out); 
	if (! my_file) { 
		cout << "Tệp không được tạo!"; 
	} 
	else { 
		cout << "Tệp được tạo thành công!"; 
		my_file.close (); 
	} 
	trả về 0; 
}

Đầu ra:

File created successfully?

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong chương trình để sử dụng các chức năng của nó.
  2. Bao gồm tệp tiêu đề fstream trong chương trình để sử dụng các lớp của nó.
  3. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  4. Gọi hàm main (). Logic chương trình nên đi trong phần thân của nó.
  5. Tạo một đối tượng của lớp fstream và đặt tên cho nó là my_file.
  6. Áp dụng hàm open () trên đối tượng trên để tạo một tệp mới. Chế độ out cho phép chúng ta ghi vào tệp.
  7. Sử dụng câu lệnh if để kiểm tra xem việc tạo tệp không thành công.
  8. Thông báo sẽ in trên bảng điều khiển nếu tệp chưa được tạo.
  9. Cuối phần nội dung của câu lệnh if.
  10. Sử dụng câu lệnh else để nêu những việc cần làm nếu tệp được tạo.
  11. Thông báo sẽ in trên bảng điều khiển nếu tệp đã được tạo.
  12. Áp dụng hàm close () trên đối tượng để đóng tệp.
  13. Cuối phần nội dung của câu lệnh else.
  14. Chương trình phải trả về giá trị nếu nó hoàn thành thành công.
  15. Kết thúc phần thân của hàm main ().

>> Đọc thêm: Cách xem ấn tượng 10 năm Zalo cực đơn giản

Cách đóng tệp

Khi một chương trình C ++ kết thúc, nó sẽ tự động

  • tuôn ra các dòng suối
  • giải phóng bộ nhớ được cấp phát
  • đóng các tệp đã mở.

Tuy nhiên, là một lập trình viên, bạn nên học cách đóng các tệp đang mở trước khi chương trình kết thúc.

Các đối tượng fstream, ofstream và ifstream có hàm close () để đóng tệp. Hàm sử dụng cú pháp sau:

void close ();

Cách ghi vào tệp

Bạn có thể ghi vào tệp ngay từ chương trình C ++ của mình. Bạn sử dụng toán tử chèn luồng (<<) cho việc này. Văn bản được ghi vào tệp phải được đặt trong dấu ngoặc kép.

Hãy để chúng tôi chứng minh điều này.

Ví dụ 2:

#include <iostream> 
#include <fstream> 
using namespace std; 
int main () { 
	fstream my_file; 
	my_file.open ("my_file.txt", ios :: out); 
	if (! my_file) { 
		cout << "Tệp không được tạo!"; 
	} 
	else { 
		cout << "Tệp được tạo thành công!"; 
		my_file << "Guru99"; 
		my_file.close (); 
	} 
	trả về 0; 
}
Đầu ra:
File created successfully?

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong chương trình để sử dụng các chức năng của nó.
  2. Bao gồm tệp tiêu đề fstream trong chương trình để sử dụng các lớp của nó.
  3. Bao gồm không gian tên std trong chương trình để sử dụng các lớp của nó mà không cần gọi nó.
  4. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  5. Tạo một thể hiện của lớp fstream và đặt tên là my_file.
  6. Sử dụng hàm open () để tạo một tệp mới có tên my_file.txt. Tệp sẽ được mở ở chế độ ra ngoài để ghi vào đó.
  7. Sử dụng câu lệnh if để kiểm tra xem tệp chưa được mở.
  8. Văn bản để in trên bảng điều khiển nếu tệp chưa được mở.
  9. Cuối phần nội dung của câu lệnh if.
  10. Sử dụng câu lệnh else để nêu những việc cần làm nếu tệp được tạo.
  11. Văn bản để in trên bảng điều khiển nếu tệp đã được tạo.
  12. Viết một số văn bản vào tệp đã tạo.
  13. Sử dụng hàm close () để đóng tệp.
  14. Cuối phần nội dung của câu lệnh else.
  15. Chương trình phải trả về giá trị khi hoàn thành thành công.
  16. Phần cuối của phần thân của hàm main ().

Cách đọc từ tệp

Bạn có thể đọc thông tin từ các tệp vào chương trình C ++ của mình. Điều này có thể thực hiện được bằng cách sử dụng toán tử trích xuất luồng (>>). Bạn sử dụng toán tử giống như cách bạn sử dụng nó để đọc thông tin nhập của người dùng từ bàn phím. Tuy nhiên, thay vì sử dụng đối tượng cin, bạn sử dụng đối tượng ifstream / fstream.

Ví dụ 3:

#include <iostream> 
#include <fstream> 
using namespace std; 
int main () { 
	fstream my_file; 
	my_file.open ("my_file.txt", ios :: in); 
	if (! my_file) { 
		cout << "Không có tệp nào như vậy"; 
	} 
	else { 
		char ch; 

		while (1) { 
			my_file >> ch; 
			if (my_file.eof ()) 
				break; 

			cout << ch; 
		} 

	} 
	my_file.close (); 
	trả về 0; 
}
Đầu ra:
Guru99

Không có tệp như vậy

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong chương trình để sử dụng các chức năng của nó.
  2. Bao gồm tệp tiêu đề fstream trong chương trình để sử dụng các lớp của nó.
  3. Bao gồm không gian tên std trong chương trình để sử dụng các lớp của nó mà không cần gọi nó.
  4. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  5. Tạo một thể hiện của lớp fstream và đặt tên là my_file.
  6. Sử dụng hàm open () để tạo một tệp mới có tên my_file.txt. Tệp sẽ được mở ở chế độ trong để đọc từ nó.
  7. Sử dụng câu lệnh if để kiểm tra xem tệp có tồn tại hay không.
  8. Văn bản để in trên bảng điều khiển nếu không tìm thấy tệp.
  9. Cuối phần nội dung của câu lệnh if.
  10. Sử dụng câu lệnh else để nêu những việc cần làm nếu tìm thấy tệp.
  11. Tạo một biến char có tên là ch.
  12. Tạo vòng lặp while để lặp lại nội dung tệp.
  13. Ghi / lưu trữ nội dung của tệp trong biến ch.
  14. Sử dụng điều kiện if và hàm eof (), ở cuối tệp, để đảm bảo trình biên dịch tiếp tục đọc từ tệp nếu không đạt đến phần cuối.
  15. Sử dụng câu lệnh ngắt để ngừng đọc từ tệp sau khi đạt đến cuối.
  16. In nội dung của biến ch trên bàn điều khiển.
  17. Phần cuối của phần thân while.
  18. Cuối phần nội dung của câu lệnh else.
  19. Gọi hàm close () để đóng tệp.
  20. Chương trình phải trả về giá trị khi hoàn thành thành công.
  21. Phần cuối của phần thân của hàm main ().

Tóm tắt lại:

  • Với xử lý tệp, kết quả đầu ra của một chương trình có thể được gửi và lưu trữ trong một tệp.
  • Sau đó, một số thao tác có thể được áp dụng cho dữ liệu khi ở trong tệp.
  • Luồng là một trừu tượng đại diện cho một thiết bị nơi các hoạt động đầu vào / đầu ra được thực hiện.
  • Luồng có thể được biểu diễn dưới dạng đích hoặc nguồn của các ký tự có độ dài không xác định.
  • Thư viện fstream cung cấp cho các lập trình viên C ++ các phương thức để xử lý tệp.
  • Để sử dụng thư viện, bạn phải đưa nó vào chương trình của mình bằng cách sử dụng chỉ thị tiền xử lý #include.

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 *