-
Giới thiệu về Xử lý tệp trong C ++
Bài viết sau đây cung cấp một phác thảo về Xử lý tệp trong C ++. Trong lập trình đôi khi chúng ta cần đọc hoặc ghi dữ liệu từ hoặc vào tệp, vì vậy C ++ cung cấp một fstream thư viện tiêu chuẩn. Chúng tôi sử dụng thư viện tiêu chuẩn iostream, iostream cung cấp phương pháp cin để đọc từ đầu vào và phương pháp cout để ghi đến đầu ra. Tương tự như vậy, để đọc từ một tệp và ghi vào một tệp, chúng ta có thể sử dụng fstream thư viện tiêu chuẩn do C ++ cung cấp. Fstream cung cấp các kiểu dữ liệu khác nhau cho các mục đích khác nhau.
Các kiểu dữ liệu khác nhau của thư viện fstream như sau:
IFSTREAM: Kiểu dữ liệu IFSTREAM của thư viện Fstream hoạt động như một luồng tệp đầu vào được sử dụng để đọc dữ liệu từ một tệp. Để sử dụng kiểu dữ liệu này trong chương trình C++, chúng ta cần bao gồm tệp tiêu đề <ifstream>. Ofstream: Kiểu dữ liệu Ofstream của thư viện Fstream hoạt động như một luồng tệp đầu ra được sử dụng để ghi dữ liệu vào tệp. Để sử dụng kiểu dữ liệu này trong chương trình C ++, chúng ta cần bao gồm tệp tiêu đề <ofstream>. FSTREAM: Kiểu dữ liệu Fstream của thư viện Fstream hoạt động như một luồng tệp nói chung có thể được sử dụng cho cả mục đích IFRuStream và OfStream. Để sử dụng kiểu dữ liệu này trong chương trình C ++, chúng ta cần bao gồm tệp tiêu đề <fstream>.
- Mã:
#include <iostream>
#include <fstream>
using namespace std;int main() {
char info[100], inp;ofstream of(“data.txt”);
if (!of) {
cout << “Không thể mở tệp tin.” << endl;
return 1;
}cout << “Nhập thông tin để lưu vào tệp tin:” << endl;
cout << “Nhập tên của bạn: “;
cin.getline(info, 100);
of << info << endl;cout << “Nhập số điện thoại của bạn: “;
cin >> info;
cin.ignore();
of << info << endl;of.close();
cout << “Bạn có muốn đọc thông tin? Nếu có, vui lòng nhập ‘y'” << endl;
cin >> inp;
if (inp == ‘y’ || inp == ‘Y’) {
ifstream ifs(“data.txt”);
if (!ifs) {
cout << “Không thể mở tệp tin.” << endl;
return 1;
}cout << “Đang đọc thông tin từ tệp tin” << endl;
ifs.getline(info, 100);
cout << info << endl;ifs.getline(info, 100);
cout << info << endl;ifs.close();
}return 0;
}vào : Nhập tên của bạn: John Doe
Nhập số điện thoại của bạn: 1234567890
Bạn có muốn đọc thông tin? Nếu có, vui lòng nhập ‘y’: yra : Đang đọc thông tin từ tệp tin
John Doe
1234567890Kết thúc
C ++ cung cấp một fstream thư viện tiêu chuẩn để đọc và ghi một tập tin. Tệp đầu tiên chúng ta cần mở sau đó chúng ta đọc hoặc ghi một tệp và cuối cùng là đóng tệp, như chúng ta có thể thấy trong đoạn mã ví dụ trên.
Chúng tôi cũng có thể mở một tệp ở nhiều chế độ bằng cách chỉ sử dụng ORing hoặc | chúng cùng nhau.
Chẳng hạn:
Mở một tệp cho cả viết và đọc dưới dạng:
fstream iof; iof.open("data.txt", ios::in | ios::out );
Ví dụ #3
Đóng tệp trong C++.
Sau khi đọc và ghi, chúng ta nên đóng một tệp, nếu chúng ta mở một tệp cho chế độ ghi hoặc nối thêm thì chúng ta phải đóng một tệp nếu không chúng ta không thể xem dữ liệu cập nhật.
Cú pháp:
void close();
Ví dụ #4
Truy cập ngẫu nhiên từ File trong C++.
Có hai con trỏ liên quan đến istream và ostream nhận con trỏ và đặt con trỏ, con trỏ get luôn trỏ đến vị trí của thao tác đọc tiếp theo và con trỏ đặt luôn trỏ đến vị trí của thao tác ghi tiếp theo. Một istream và ostream cung cấp một số hàm, đó là tellg (trả về vị trí của con trỏ get), tellp (trả về vị trí của con trỏ đặt), seekg (“tìm kiếm con trỏ get”, bỏ qua vị trí của con trỏ get), seekp (“tìm kiếm con trỏ đặt”, bỏ qua vị trí của con trỏ đặt).
Đọc từ tệp trong C++
Khi chúng ta đọc dữ liệu từ bàn phím bằng cách sử dụng đối tượng cin và toán tử trích xuất luồng (“>>”), theo cách tương tự, chúng ta có thể đọc dữ liệu từ một tệp vào một chương trình bằng cách sử dụng đối tượng ifstream và toán tử trích xuất luồng (“>>”), vì vậy sự khác biệt là cin là một đối tượng của lớp istream instance của nó chúng ta sẽ sử dụng object của ifstream.
Ghi vào tệp trong C++
Một lần nữa khi chúng ta ghi dữ liệu vào màn hình bằng cách sử dụng đối tượng cout và toán tử chèn luồng (“<<“), giống như cách chúng ta có thể ghi dữ liệu vào một tệp từ một chương trình bằng cách sử dụng đối tượng ofstream và toán tử chèn luồng (“<<“), vì vậy sự khác biệt là cout là một đối tượng của lớp ostream thể hiện của nó, chúng ta sẽ sử dụng đối tượng của ofstream.
Ví dụ về xử lý tệp trong C++
Dưới đây là các ví dụ về Xử lý tệp trong C ++:
Ví dụ #1
Ví dụ để đọc và ghi từ hoặc vào một tệp.
Mã:
#include <iostream>
#include <fstream>
using namespace std;int main() {
char info[100], inp;ofstream of(“data.txt”);
if (!of) {
cout << “Không thể mở tệp tin.” << endl;
return 1;
}cout << “Nhập thông tin để lưu vào tệp tin:” << endl;
cout << “Nhập tên của bạn: “;
cin.getline(info, 100);
of << info << endl;cout << “Nhập số điện thoại của bạn: “;
cin >> info;
cin.ignore();
of << info << endl;of.close();
cout << “Bạn có muốn đọc thông tin? Nếu có, vui lòng nhập ‘y'” << endl;
cin >> inp;
if (inp == ‘y’ || inp == ‘Y’) {
ifstream ifs(“data.txt”);
if (!ifs) {
cout << “Không thể mở tệp tin.” << endl;
return 1;
}cout << “Đang đọc thông tin từ tệp tin” << endl;
ifs.getline(info, 100);
cout << info << endl;ifs.getline(info, 100);
cout << info << endl;ifs.close();
}return 0;
}output : Nhập thông tin để lưu vào tệp tin:
Nhập tên của bạn: John Doe
Nhập số điện thoại của bạn: 1234567890
Bạn có muốn đọc thông tin? Nếu có, vui lòng nhập ‘y’: y
Đang đọc thông tin từ tệp tin
John Doe
1234567890Ví dụ #2
Mở một tập tin với chức năng mở.
Tệp cũng có thể được mở bằng hàm open(). Hàm open() là thành viên của các đối tượng ifstream, ofstream và fstream. Một hàm open() cho đối tượng fstream hoặc ofstream có thể được sử dụng để mở một tệp để ghi và đối tượng ifstream được sử dụng để mở một tệp để đọc.
Cú pháp:
void open(const char *filename, ios::openmode )
Thông số:
1. *Tên tệp: Tham số này đại diện cho tên hoặc vị trí của tệp sẽ được mở.
2. ios::openmode: Tham số này đại diện cho chế độ mà tệp sẽ được mở.
Các giá trị có thể có hoặc các chế độ có thể có mà tệp có thể được mở là năm, được đưa ra dưới đây:
- ios::in:Chế độ đọc: Mở một tệp để đọc.
- iOS::OUT – Chế độ ghi: Mở một tập tin để viết.
- ios::app – Chế độ nối thêm: Mở tệp cần nối đầu ra vào cuối tệp.
- iOS::ATE: Mở tệp và con trỏ đọc hoặc ghi được di chuyển đến cuối tệp.
- IOS::TRUNK – Chế độ cắt ngắn: Nội dung tệp hiện có sẽ bị cắt ngắn trước khi mở tệp.