-
Xử lý tệp trong C ++ là gì?
Tệp lưu trữ dữ liệu một cách vĩnh viễn trong bộ nhớ lưu trữ. Với xử lý tệp, đầ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 trong khi ở trong tệp.
Luồng là sự trừu tượng hóa 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ể biểu diễn luồng dưới dạng đích đến hoặc nguồn ký tự có độ dài không xác định. Điều này sẽ được xác định bởi cách mà chúng được sử dụng. C++ cung cấp cho bạn một thư viện đi kèm với các phương pháp xử lý tệp. Hãy tiến hành cuộc thảo luận về chủ đề này cùng với chúng tôi.
Trong hướng dẫn c++ này, bạn sẽ học:
- Xử lý tệp trong C ++ là gì?
- Thư viện fstream
- Cách mở tệp
- Cách đóng tệp
- Làm thế nào để ghi vào tập tin
- Cách đọc từ tệp
-
Tóm tắt:
- Với xử lý tệp, đầu ra của chương trình có thể được gửi và lưu trữ trong một tệp.
- Một số thao tác sau đó có thể được áp dụng cho dữ liệu trong khi ở trong tệp.
- Luồng là một sự 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.
- Một luồng có thể được biểu diễn dưới dạng đích hoặc nguồn 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 pháp xử lý tệp.
- Để tận dụng thư viện, bạn cần nhập 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.
-
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ử khai thác luồng (>>). Bạn sử dụng toán tử giống như cách bạn sử dụng nó để đọc đầu vào 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ẽ sử dụng đối tượngifstream
/fstream
theo cách tương tự.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 << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Ra:
Không có tập tin như vậy
Dưới đây là một hình ảnh chụp màn hình của mã tương tự:
Giải thích mã:
- 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ó.
- Bao gồm tệp tiêu đề fstream trong chương trình để sử dụng các lớp của nó.
- 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ó.
- 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.
- Tạo một thể hiện của lớp fstream và đặt tên cho nó my_file.
- 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ó.
- Sử dụng câu lệnh if để kiểm tra xem tệp không tồn tại.
- Văn bản để in trên bảng điều khiển nếu không tìm thấy tệp.
- Kết thúc phần thân của câu lệnh if.
- Sử dụng câu lệnh else để nêu rõ phải làm gì nếu tệp được tìm thấy.
- Tạo một biến char có tên ch.
- Tạo một vòng lặp trong khi để lặp lại nội dung tệp.
- Ghi / lưu trữ nội dung của tệp trong biến ch.
- Sử dụng hàm if condition và eof() nghĩa là 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 cuối.
- Sử dụng câu lệnh ngắt để ngừng đọc từ tệp sau khi đạt đến kết thúc.
- In nội dung của biến ch trên bảng điều khiển.
- Kết thúc trong khi cơ thể.
- Kết thúc nội dung của tuyên bố khác.
- Gọi hàm close() để đóng file.
- Chương trình phải trả lại giá trị sau khi hoàn thành thành công.
- Cuối phần thân của hàm main().
-
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 << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Đầu ra:
Dưới đây là ảnh chụp màn hình của mã:
Giải thích mã:
- 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ó.
- Bao gồm tệp tiêu đề fstream trong chương trình để sử dụng các lớp của nó.
- 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ó.
- 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.
- Tạo một thể hiện của lớp fstream và đặt tên cho nó my_file.
- 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ế độ out để ghi vào đó.
- Sử dụng câu lệnh if để kiểm tra xem tệp chưa được mở.
- Văn bản để in trên bảng điều khiển nếu tệp không được mở.
- Kết thúc phần thân của câu lệnh if.
- Sử dụng câu lệnh else để nêu rõ phải làm gì nếu tệp được tạo.
- Văn bản để in trên bảng điều khiển nếu tệp được tạo.
- Viết một số văn bản vào tệp đã tạo.
- Sử dụng hàm close() để đóng tệp.
- Kết thúc nội dung của tuyên bố khác.
- Chương trình phải trả lại giá trị sau khi hoàn thành thành công.
- Cuối phần thân của hàm main().
- 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 chấm dứt.Các đối tượng fstream, ofstream và ifstream có hàm close() để đóng tệp. Hàm lấy cú pháp sau:
void close();
Làm thế nào để ghi vào tập tin
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 đính kèm trong dấu ngoặc kép.
Hãy để chúng tôi chứng minh điều này.
Cách đóng tệp
Khi một chương trình C ++ chấm dứt, nó sẽ tự động
- xả các dòng suối
- Giải phóng bộ nhớ được cấp phát
- Đóng các tệp đã mở.
-
Giá trị Sự miêu tả iOS:: Ứng dụng Chế độ Chắp thêm. Đầu ra được gửi đến tệp được gắn vào nó. iOS::ATE Nó mở tệp cho đầu ra sau đó di chuyển điều khiển đọc và ghi đến cuối tệp. iOS::IN Nó mở tệp để đọc. iOS::OUT Nó mở tệp để ghi. iOS::TRUNC Nếu một tệp tồn tại, các phần tử tệp phải được cắt ngắn 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 | (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 << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Ra:
Dưới đây là ảnh chụp màn hình của mã:
Giải thích mã:
- 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ó.
- Bao gồm tệp tiêu đề fstream trong chương trình để sử dụng các lớp của nó.
- Bao gồm không gian tên std trong mã của chúng ta để sử dụng các lớp của nó mà không cần gọi nó.
- Gọi hàm main(). Logic chương trình nên đi vào trong cơ thể của nó.
- Tạo một đối tượng của lớp fstream và đặt tên cho nó my_file.
- Áp dụng hàm open() trên đối tượng trên để tạo một tập tin mới. Chế độ out cho phép chúng ta ghi vào tệp.
- Sử dụng câu lệnh if để kiểm tra xem việc tạo tệp có thất bại hay không.
- Thông báo để in trên bảng điều khiển nếu tệp không được tạo.
- Kết thúc phần thân của câu lệnh if.
- Sử dụng câu lệnh else để nêu rõ phải làm gì nếu tệp được tạo.
- Thông báo để in trên bảng điều khiển nếu tệp đã được tạo.
- Áp dụng hàm close() trên đối tượng để đóng file.
- Kết thúc nội dung của tuyên bố khác.
- Chương trình phải trả về giá trị nếu hoàn thành thành công.
- Kết thúc phần thân hàm main().
- Hình ảnh sau đây làm cho nó đơn giản để hiểu:Để 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.
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ở nó. Nếu bạn cần ghi vào tệp, hãy mở nó 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ở nó bằng đối tượng ifstream.
Ba đối tượng, nghĩa là fstream, ofstream và ifstream, có hàm open() được định nghĩa trong chúng. Hàm lấy cú pháp sau:
open (file_name, mode);
- 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ể lấy bất kỳ giá trị nào sau đây:
-
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 các tệp. Các lớp này bao gồm:
- ofstream là một lớp thể hiện 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à một lớp thể hiện 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à một lớp thường được sử dụng để biểu diễn 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.