C++
  • Home
  • Học lập trình
    • All
    • Học C++
    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

    Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

    học lập trình c++ thì làm được gì

    Học Lập Trình C++ Thì Làm Được Gì?

    Sự khác nhau giữa struct và class trong C++

    Sự Khác Nhau Giữa Struct Và Class Trong C++

    Sự khác nhau giữa tham chiếu và con trỏ c++

    Sự Khác Nhau Giữa Tham Chiếu Và Con Trỏ Trong C++

    • Học C++
  • Reviews
    Top 7 công cụ tạo website không cần code

    Top 7 Công Cụ Tạo Website Không Cần Code Miễn Phí

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips
No Result
View All Result
  • Home
  • Học lập trình
    • All
    • Học C++
    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

    Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

    học lập trình c++ thì làm được gì

    Học Lập Trình C++ Thì Làm Được Gì?

    Sự khác nhau giữa struct và class trong C++

    Sự Khác Nhau Giữa Struct Và Class Trong C++

    Sự khác nhau giữa tham chiếu và con trỏ c++

    Sự Khác Nhau Giữa Tham Chiếu Và Con Trỏ Trong C++

    • Học C++
  • Reviews
    Top 7 công cụ tạo website không cần code

    Top 7 Công Cụ Tạo Website Không Cần Code Miễn Phí

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips
No Result
View All Result
C++
No Result
View All Result
Home Học lập trình Học C++

Sự khác biệt giữa tệp văn bản và tệp nhị phân trong C++

admin by admin
July 6, 2023
in Học C++
0 0
0
0
SHARES
0
VIEWS
Share on FacebookShare on Twitter

Xử lý tệp cho phép chúng tôi lưu trữ đầu vào của người dùng trong một tệp để ngay cả sau khi chương trình bị chấm dứt, dữ liệu do người dùng nhập không bị xóa hoặc xóa. Như xảy ra trong một chương trình đơn giản, chúng tôi truy cập dữ liệu đó bằng cách thực thi lại chương trình, nó hoạt động giống như một ứng dụng trong thế giới thực.

Tại đây bạn có thể lưu trữ đầu vào của người dùng trong một tệp theo hai cách, bạn có thể gọi nó là định dạng dữ liệu.

Chúng ta sẽ hiểu hai điều này với một số ví dụ –

Ở đây chúng ta sẽ thảo luận về định dạng văn bản và định dạng nhị phân trong C ++,

  • Định dạng văn bản/chế độ ký tự
  • Định dạng nhị phân

Ở đây chúng ta sẽ hiểu các định dạng này từ sự khác biệt giữa hai định dạng này.

Nó có định dạng văn bản theo mặc định.

Nói chung, đây là hai cách để lưu trữ dữ liệu ở định dạng văn bản –

  1. Toán tử chèn (<<) để viết, toán tử trích xuất (>>) để đọc
  2. put() để viết, để đọcget()

Dưới đây là một ví dụ về định dạng văn bản dưới đây –

#include<iostream>
#include<stdio.h>   //  gets()
#include<fstream>
using namespace std;

  int main()
  {
      char *name;

      ofstream fout;
      cout<<"Enter Your Name :";
      gets(name);

      cout<<"Name: "<<name;// displaying on monitor

      fout.open("text.txt");
      fout<<name;//writing in file
      fout.close();

return 0;
 }

RA

Enter Your Name : rahul singh
Name: rahul singh

Đối với định dạng nhị phân và , là các hàm được xác định trước, được sử dụng –write()read()

Đây là chương trình,

#include<iostream>
#include<stdio.h>
#include<fstream>
using namespace std;

 int main()
  {
      char *name;
      ofstream fout;

      cout<<"Enter Your Name :";
      gets(name);

      cout<<"Name: "<<name; //displaying on monitor

      fout.open("binary.txt",ios::binary);
      fout.write((char*)&name,sizeof(name));//writing in file
      fout.close();

 return 0;
  }

RA

Enter Your Name : rahul singh
Name: rahul singh

Lưu ý ở đây rằng txt là một phần mở rộng tệp trong cả hai chương trình trong khi định dạng của dữ liệu được lưu trữ trong đó sẽ khác nhau (văn bản / nhị phân).

Nếu sử dụng ios :: nhị phân với << chẳng hạn như,

fout.open("text.txt",ios::binary); 
fout<<name;

Thậm chí sau đó nó sẽ lưu trữ dữ liệu ở định dạng văn bản.

Và nếu chúng ta không sử dụng với như,ios :: binarywrite()

fout.open("binary.txt"); 
fout.write((char*)&name,sizeof(name));

Vì vậy, nó sẽ lưu trữ các bản ghi ở định dạng nhị phân chỉ tối đa một giới hạn, vì vậy chức năng với ios::binary là bắt buộc đối với định dạng nhị phân.write()

Một ví dụ về điều này được đưa ra ở cuối trang.

  • Ở dạng ký tự, hình thức mà người dùng nhập dữ liệu được lưu trữ trong tệp ở cùng một dạng.
    Giả sử người dùng lưu trữ một tên như “rahul singh“, thì nó sẽ được lưu trữ trong tệp như sau –
  • Ở dạng nhị phân, dữ liệu do người dùng nhập được lưu trữ trong tệp ở dạng nhị phân. Giả sử người dùng lưu trữ một tên, thì nó sẽ được lưu trữ trong tệp như sau –
  • lưu trữ dữ liệu ở dạng văn bản chiếm nhiều bộ nhớ hơn so với lưu trữ dữ liệu ở dạng nhị phân – Giống như tên “rahul Singh” từng được lưu trữ ở định dạng văn bản-

Bởi vì chúng ta biết rằng kích thước bộ nhớ của ký tự là 1 byte, vì vậy 1 byte cho mỗi ký tự (nút dấu cách cũng sẽ lấy 1 byte) như,

Và bây giờ cùng một tên “rahul Singh” hiện được lưu trữ ở dạng nhị phân.

Đây là sơ đồ

Vì kích thước bộ nhớ là 2 byte, do đó,int

Bây giờ bạn có thể thấy khi chúng tôi lưu trữ cùng một dữ liệu, đầu tiên ở định dạng văn bản, nó mất 11 byte trong khi lưu trữ ở dạng nhị phân, chỉ mất 2 byte.

  • Vì kích thước của dữ liệu lưu trữ ở dạng ký tự lớn hơn kích thước của dữ liệu lưu trữ ở dạng nhị phân. Do đó, dữ liệu được lưu trữ ở dạng nhị phân được truy cập nhanh hơn dữ liệu được lưu trữ ở dạng văn bản.

Giả sử nếu người dùng lưu trữ tên “rahul singh“, Tệp dữ liệu được lưu trữ ở định dạng nhị phân được chuyển đổi thành nhị phân hoặc một số ký tự đặc biệt mà con người không thể đọc được.

Bởi vì dữ liệu được lưu trữ ở định dạng văn bản có thể được đọc từ mặt sau ngay cả khi không có chương trình làm giảm tính bảo mật.

Bây giờ chúng ta biết rằng dữ liệu được lưu trữ ở dạng nhị phân an toàn hơn và nhanh hơn dạng ký tự.

Nhưng lưu trữ dữ liệu ở dạng ký tự cũng có một lợi thế, chẳng hạn như in bảng điểm của học sinh, in biên lai hóa đơn, v.v. Chúng tôi sử dụng hình thức ký tự để thực hiện các nhiệm vụ như vậy.

Hãy hiểu điều này với một ví dụ,

Giả sử một chương trình là “Hệ thống quản lý sinh viên” lưu trữ tất cả các hồ sơ của sinh viên. Trong đó, chúng tôi đã lưu trữ dữ liệu ở dạng nhị phân. Nhưng nếu có một tùy chọn để in bảng điểm của học sinh thì đó có thể là một chương trình tốt hơn. Vì vậy, đối với nhiệm vụ này, chúng ta có thể sử dụng dạng ký tự.

Sử dụng dạng ký tự, chúng tôi đã in một số bảng đánh dấu ở đây.

Không nhất thiết là chúng ta chỉ có thể sử dụng dạng ký tự để in bảng điểm học sinh. Nó cũng là một lựa chọn tốt hơn cho tất cả những ai cần một đầu ra vật lý.

Phụ

Để lưu trữ dữ liệu ở định dạng nhị phân, chúng tôi sử dụng cú pháp sau –

Nhưng ở đây chúng tôi chưa sử dụng ios :: nhị phân nhưng nó vẫn lưu trữ dữ liệu ở định dạng nhị phân

Điều này có nghĩa là chúng tôi đang lưu trữ dữ liệu ở định dạng nhị phân theo hai cách.

      ofstream fout;
      fout.open("binary.txt");// here ios::binary not used
      fout.write((char*)&name,sizeof(name));
      fout.close();

Ở đây chúng ta chưa sử dụng, tuy nhiên nó sẽ lưu trữ dữ liệu ở dạng nhị phân.ios::binary

Ý nghĩa trong trường hợp đầu tiên

fout.open("binary.txt")
fout.write((char*)&name,sizeof(name));

Và trong trường hợp thứ hai

fout.open("binary.txt",ios::binary)
fout.write((char*)&name,sizeof(name));

Cả hai sẽ lưu trữ dữ liệu ở định dạng nhị phân.

Bởi vì hàm tự động lưu trữ dữ liệu ở định dạng nhị phân. Nhưng bây giờ câu hỏi đặt ra là liệu chế độ nhị phân có phải là tùy chọn hay không? Câu trả lời là Không.write()

Vậy tại sao nó không được sử dụng trong trường hợp đầu tiên. Điều này là do bắt buộc khi chúng tôi lưu trữ một dữ liệu số khối lượng lớn.ios::binary

Hãy hiểu điều này với các chương trình dưới đây,

Ở đây cả hai chương trình dưới đây thực thi lần thứ 15 (có nghĩa là chúng tôi viết một tệp duy nhất lần thứ 15) vì chúng tôi đã nói rằng bắt buộc khi chúng tôi lưu trữ dữ liệu số khối lượng lớn.ios::binary

  • Không có IOS::Chế độ nhị phân
#include<iostream>
#include<fstream>
using namespace std;

 class example
  {
   public:
     int number;
     void write();
     void read();
  };
 example obj;   // object created

   void example:: write(void)
    {
       ofstream fout;
       cout<<"Press any key to write file:";

	fout.open("myfile.txt",ios::app);
	fout.write((char*)&obj,sizeof(example));
	fout.close();
     }

    void example::read(void)
     {
	ifstream fin;
	fin.open("myfile.txt");

	while(fin.read((char*)&obj,sizeof(example)))
	 {
	    cout<<number<<endl;
	 }
	fin.close();
      }

//main program start here
  int main()
   {
  //write a file 15th time
     obj.number=1; obj.write();
     obj.number=2; obj.write();
     obj.number=3; obj.write();
     obj.number=4; obj.write();
     obj.number=5; obj.write();
     obj.number=6; obj.write();
     obj.number=7; obj.write();
     obj.number=8; obj.write();
     obj.number=9; obj.write();
     obj.number=10; obj.write();
     obj.number=11; obj.write();
     obj.number=12; obj.write();
     obj.number=13; obj.write();
     obj.number=14; obj.write();
     obj.number=15; obj.write();

   obj.read(); //displaying file content
 return 0;
 }

OUTPUT

Press any key to continue

1
2
3
4
5
6
7
8
9
10
11
12
13
9083
5432
32159

now we can see above output we store number 1-15 but its not happen and print garbage value after number 13-15, now we will perform same task using mode.ios::binary

  • with  modeios::binary
#include<iostream>
#include<fstream>
using namespace std;

 class example
  {
   public:
     int number;
     void write();
     void read();
  };
 example obj;   // object created

   void example:: write(void)
    {
       ofstream fout;
       cout<<"Press any key to write file:";

	fout.open("myfile.txt",ios::binary|ios::app);
	fout.write((char*)&obj,sizeof(example));
	fout.close();
     }

    void example::read(void)
     {
	ifstream fin;
	fin.open("myfile.txt",ios::binary);

	while(fin.read((char*)&obj,sizeof(example)))
	 {
	    cout<<number<<endl;
	 }
	fin.close();
      }

//main program start here
  int main()
   {
  //write a file 15th time
     obj.number=1; obj.write();
     obj.number=2; obj.write();
     obj.number=3; obj.write();
     obj.number=4; obj.write();
     obj.number=5; obj.write();
     obj.number=6; obj.write();
     obj.number=7; obj.write();
     obj.number=8; obj.write();
     obj.number=9; obj.write();
     obj.number=10; obj.write();
     obj.number=11; obj.write();
     obj.number=12; obj.write();
     obj.number=13; obj.write();
     obj.number=14; obj.write();
     obj.number=15; obj.write();

    obj.read(); //displaying file content

return 0;
  }

OUTPUT

Press any key to continue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Trong đầu ra ở trên bằng cách sử dụng chế độ nhị phân, lưu trữ tệp hoàn chỉnh, ghi lại và cho đầu ra đúng.

Khái niệm xử lý tệp rất nhạy cảm vì các loại dữ liệu có thể lấy bộ nhớ khác nhau trong một hệ thống khác. Nhưng kích thước của định dạng văn bản sẽ luôn lớn hơn định dạng nhị phân.

Nếu một dữ liệu khối lượng lớn thuộc các loại số, thì sẽ là bắt buộc trong khi nó sẽ là tùy chọn đối với dữ liệu có định dạng văn bản.ios::binary

Previous Post

Vòng lặp while trong C++

Next Post

Lập trình Hướng đối tượng trong C++

admin

admin

Next Post

Lập trình Hướng đối tượng trong C++

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Trending
  • Comments
  • Latest
cách code hình trái tim bằng c++

Cách code hình trái tim giống với nhân vật Thủ Khoa Lý

December 7, 2023
hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

October 3, 2023
Office 2019 full crack

Cách Crack Office 2019 Đơn Giản, Dễ Hiểu Thành Công 100%

September 19, 2023
Top 10 ứng dụng mua hàng Trung Quốc uy tín nhất hiện nay

Top 10 ứng dụng mua hàng Trung Quốc uy tín nhất hiện nay

January 18, 2025

Các lớp lưu trữ trong cpp

0

Câu lệnh if else trong cpp

0

Chức năng của switch trong cpp

0

Mảng đối tượng trong C++

0
Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

October 23, 2023
Top 7 website bán túi xách nữ chính hãng, uy tín nhất

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

October 12, 2023
Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

October 7, 2023
Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

October 5, 2023

Recommended

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

October 23, 2023
Top 7 website bán túi xách nữ chính hãng, uy tín nhất

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

October 12, 2023
Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

October 7, 2023
Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

October 5, 2023
Hướng dẫn học C++

© 2023 Hướng dẫn học C++ - Website thuộc bản quyền của Hướng dẫn học C++.

Liên kết

  • Home
  • Học lập trình
  • Reviews
  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn

Theo dõi chúng tôi

No Result
View All Result
  • Home
  • Học lập trình
    • Học C++
  • Reviews
  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips

© 2023 Hướng dẫn học C++ - Website thuộc bản quyền của Hướng dẫn học C++.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In