Đọc/ghi File trong C++ | fstream trong c++ – hàm cắt chuỗi php – phptravels.vn

Đọc/ghi File trong ₵++ | fstream trong ͼ++ – Học ₵++ căn bản & chuyên sâu cho người mới học từ Từ ngữ ₵++ hướng đối tượng, Cú pháp căn bản, Biến, Hàm, Kiểu dữ liệu, Tính kế thừa, Nạp chồng, Tính đa hình, Tính bao đóng, Giải quyết ngoại lệ, Template, Overriding, Toán tử, Vòng lặp, Điều khiển luồng, Interface, Thư viện STL, Iterator, Con trỏ, Mảng, Exception Handling, Overloading, Namespace, Thư viện chuẩn ₵++ & Signal Handling

Bạn đang xem: hàm cắt chuỗi php

Đọc/ghi File trong ₵++ | fstream trong ͼ++

Tới hiện tại, tất cả chúng ta đã sử dụng thư viện chuẩn iostream, phân phối các công thức cin & cout để đọc từ Standard Input & ghi tới Standard Output tương ứng.

Chương này sẽ chỉ dẫn bạn cách đọc & ghi một file. Điều này cần một Thư viện chuẩn ₵++ khác là fstream, mà khái niệm 3 kiểu dữ liệu mới:

Kiểu dữ liệu
Diễn tả

ofstream
Kiểu dữ liệu này trình diễn Output File Stream & được sử dụng để tạo các file & để ghi thông tin tới các file đó

ifstream
Kiểu dữ liệu này trình diễn Input File Stream & được sử dụng để đọc thông tin từ các file

fstream
Kiểu dữ liệu này nói chung trình diễn File Stream, & có các khả năng của cả ofstream & ifstream, nghĩa là nó có thể tạo file, ghi thông tin tới file & đọc thông tin từ file

Để thực hiện công cuộc giải quyết file trong ₵++, bạn bao các header file là <iostreamvàgt; & <fstream> trong source file của chương trình ₵++ của các bạn.

Tiếp thị

Mở một File trong ₵++

Một file phải được mở trước khi bạn có thể đọc thông tin từ nó hoặc ghi thông tin tới nó. Hoặc đối tượng ofstream hoặc đối tượng fstream có thể được sử dụng để mở một file với mục đích viết hoặc đối tượng ifstream được sử dụng để mở file chỉ với mục đích đọc.

Dưới đây là cú pháp chuẩn cho hàm open(), là một member của các đối tượng fstream, ifstream & ofstream trong ₵++:

void open(const char *ten_file, ios::che_do);

Tại đây, tham số trước hết xác nhận tên & địa điểm của file để được mở & tham số thứ hai của hàm member open() khái niệm chính sách mà file nên được mở.

Chính sách
Diễn tả

ios::app
Chính sách Append. Toàn bộ output tới file đó được phụ thêm vào cuối file đó

ios::ate
Mở một file cho outpur & di chuyển điều khiển read/write tới cuối của file

ios::in
Mở một file để đọc

ios::out
Mở một file để ghi

ios::trunc
Nếu file này đã tồn tại, bài viết của nó sẽ được cắt (truncate) trước khi mở file

Bạn có thể phối hợp hai hoặc nhiều giá trị này bằng việc hoặc chúng bên nhau (sử dụng (|). Chẳng hạn, nếu bạn mong muốn mở một file trong chính sách ghi & mong muốn cắt (truncate) nó trong trường hợp nó đã tồn tại, bạn theo cú pháp sau:

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

Theo cách tương đương, bạn có thể mở một file với mục đích đọc & ghi như sau:

fstream  vietjack;
vietjack.open("file.dat", ios::out | ios::in );

Đóng một File trong ₵++

Khi một chương trình ₵++ chấm dứt, nó auto đóng toàn bộ Stream, giải phóng toàn bộ bộ nhớ lưu trữ đã cấp phát & đóng toàn bộ file đã mở. Nhưng nó là bài thực hành tốt cho một lập trình viên nên đóng toàn bộ file đã mở trước khi chấm dứt chương trình.

Dưới đây là cú pháp chung cho hàm close() trong ₵++, là một member của các đối tượng fstream, ifstream & ofstream trong ₵++:

void close();

Ghi File trong ₵++

Trong lúc lập trình ₵++, bạn ghi thông tin tới một file từ chương trình của các bạn bởi sử dụng toán tử chèn luồng là (<<), giống như khi bạn sử dụng toán tử đó để tạo thông tin đầu ra tới màn hình. Chỉ có 1 điểm khác nhau là bạn sử dụng một đối tượng ofstream hoặc fstream trong ₵++ thay cho đối tượng cout trong ₵++.

Đọc một File trong ₵++

Độc giả thông tin từ một file trong chương trình ₵++ của các bạn bởi sử dụng toán tử trích luồng là (>>), giống như bạn sử dụng toán tử đó để nhập thông tin đầu vào từ keyboard. Điểm khác nhau là bạn sử dụng một đối tượng ifstream hoặc fstream thay vì sử dụng đối tượng cin trong ₵++.

Chẳng hạn về Đọc & Ghi file trong ₵++

Chương trình ₵++ sau mở một file trong chính sách đọc & ghi. Sau khoảng thời gian ghi thông tin được nhập vào bởi người tiêu dùng tới một file là vietjack.dat, chương trình đọc thông tin từ file đó & tạo kết quả đầu ra trên màn hình:

#include <fstream>
#include <iostreamvàgt;
using namespace std;
 
int main ()
{
    
   char data[100];

   // mo mot file trong che do write.
   ofstream outfile;
   outfile.open("vietjack.dat");

   cout << "Ghi du lieu toi file!" << endl;
   cout << "Nhap ten cua ban: "; 
   cin.getline(data, 100);

   // ghi du lieu da nhap vao trong file.
   outfile << data << endl;

   cout << "Nhap tuoi cua ban: "; 
   cin >> data;
   cin.ignore();
   
   // ghi du lieu da nhap vao trong file.
   outfile << data << endl;

   // dong file da mo.
   outfile.close();

   // mo mot file trong che do read.
   ifstream infile; 
   infile.open("vietjack.dat"); 
 
   cout << "n===========================n" ;
   cout << "Doc du lieu co trong file!" << endl; 
   infile >> data; 

   // ghi du lieu tren man hinh.
   cout << data << endl;
   
   // tiep tuc doc va hien thi du lieu.
   infile >> data; 
   cout << data << endl; 

   // dong file da mo.
   infile.close();

   return 0;
}

Biên dịch & chạy chương trình ₵++ trên sẽ cho kết quả sau:

Chẳng hạn trên sử dụng các hàm bổ sung từ đối tượng cin, như hàm getline() để đọc dòng từ bên ngoài & hàm ignore() để bỏ qua các ký tự phụ bên trái lệnh read trước đây.

Tiếp thị

Con trỏ địa điểm File trong ₵++

Cả hai đối tượng istream & ostream đều phân phối các hàm member để xác nhận lại địa điểm của con trỏ địa điểm file (file-position pointer). Các hàm member đó là seekg (viết tắt của seek get) cho istream & seekp (viết tắt của seek put) cho ostream trong ₵++.

Tham số cho seekg & seekp thương là một long int. Tham số thứ hai có thể được xác nhận để hướng dẫn hướng tìm kiếm. Hướng tìm kiếm có thể là ios::beg (mặc định) để xác nhận địa điểm liên quan tới phần khởi đầu của một Stream, là ios::cur để xác nhận địa điểm liên quan tới địa điểm lúc này trong một Stream hoặc là ios::end để xác nhận địa điểm liên quan tới phần chấm dứt của một Stream trong ₵++.

Con trỏ địa điểm file là một giá trị integer mà xác nhận địa điểm trong file, tính toán là số byte từ địa điểm khởi đầu của file đó. Dưới đây là một số chẳng hạn để xác nhận địa điểm của con trỏ địa điểm file trong ₵++:

// xac dinh vi tri byte thu ռ cua doi tuong file
doi_tuong_file.seekg( ռ );

// xac dinh vi tri ռ byte ve sau cua doi tuong file
doi_tuong_file.seekg( ռ, ios::cur );

// xac dinh vi tri ռ byte bat dau tu cuoi cua doi tuong file
doi_tuong_file.seekg( ռ, ios::end );

// xac dinh vi tri tai cuoi doi tuong file
doi_tuong_file.seekg( 0, ios::end );

Đã có app VietJack trên smartphone, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng….Free. Tải ngay áp dụng trên Android & iOS.

Theo dõi http://phptravels.vn/ Free trên mxh facebook & youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt mặt các dự án trên trường & đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo cơ hội cho sinh viên cho thể mua khóa học.

Bài viết khóa học gồm 16 chuơng & 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/
Bạn nào có nhu cầu mua, sms trực tiếp α Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài tiên tiến nhất về Java,₵,₵++,Javascript,HTML,Python,Database,Mobile…. tiên tiến nhất của http://phptravels.vn/.