亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C/C++中二進(jìn)制文件&順序讀寫詳解及其作用介紹

 更新時(shí)間:2021年09月02日 16:35:18   作者:我是小白呀  
這篇文章主要介紹了C/C++中二進(jìn)制文件&順序讀寫詳解及其作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

概述

二進(jìn)制文件不同于文本文件, 它可以用于任何類型的文件 (包括文本文件).

在這里插入圖片描述

二進(jìn)制 vs ASCII

對(duì)于數(shù)值數(shù)據(jù), ASCII 形式與二進(jìn)制形式不同. ASCII 文件直觀, 便于閱讀, 但一般占存儲(chǔ)空間較多, 而且需要花時(shí)間轉(zhuǎn)換. 二進(jìn)制文件是計(jì)算機(jī)的內(nèi)部形式, 節(jié)省空間且不需要轉(zhuǎn)換, 但不能直觀顯示.

對(duì)于字符信息, 在內(nèi)存中是以 ASCII 代碼形式存放, 無(wú)論用 ASCII 文件輸出還是用二進(jìn)制文件輸出, 形式是一樣的.

二進(jìn)制寫入

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    int x = 12345;
    ofstream outfile("binary.txt", ios::binary);

    outfile.write((char*)&x, 2);  // 寫入
    outfile.close();  // 釋放

    return 0;
}

輸出結(jié)果:

在這里插入圖片描述

ASCII 寫入

將 int x = 12345 寫入文件.

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    int x = 12345;
    ofstream outfile("ASCII.txt");
    
    outfile << x << endl;  // 寫入
    outfile.close();  // 釋放

    return 0;
}

輸出結(jié)果:

在這里插入圖片描述

read 和 write 讀寫二進(jìn)制文件

打開方式:

ofstream a("file1.dat", ios::out | ios::binary);
ifstream b("file2.dat",ios::in | ios::binary);

文件讀寫方式:

istream& read(char *buffer,int len);
ostream& write(const char * buffer,int len);
  • char *buffer 指向內(nèi)存中一段存儲(chǔ)空間
  • int len 是讀寫的字節(jié)數(shù)

例子:

將 p1 指向的空間中 50 個(gè)字節(jié)存入文件對(duì)象 a:

a.write(p1,50)

從文件對(duì)象 b 讀出 30 個(gè)字節(jié), 存址指向空間:

b.read(p2,30)

案例一

將數(shù)據(jù)以二進(jìn)制的形式存放在磁盤中.

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

int main() {
    Student stud[2] = {
            {01, "Little White"},
            {01, "Big White"}
    };

    ofstream outfile("student.dat", ios::binary);
    if(!outfile){
        cerr << "open error"  << endl;
        exit(1);  // 退出程序
    }
    for (int i = 0; i < 2; ++i) {
        outfile.write((char*)&stud[i], sizeof(stud[i]));
    }
    cout << "任務(wù)完成, 請(qǐng)查看文件" << endl;
    outfile.close();

    return 0;
}

案例二

將二進(jìn)制文件中的數(shù)據(jù)讀入內(nèi)存.

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

int main() {
    Student stud[2];

    ifstream infile("student.dat", ios::binary);
    if(!infile){
        cerr << "open error"  << endl;
        exit(1);  // 退出程序
    }

    // 讀取數(shù)據(jù)
    for (int i = 0; i < 2; ++i) {
        infile.read((char*)&stud[i], sizeof(stud[i]));
    }
    infile.close();

    // 顯示數(shù)據(jù)
    for (int i = 0; i < 2; ++i) {
        stud[i].display();
    }

    return 0;
}

到此這篇關(guān)于C/C++中二進(jìn)制文件&順序讀寫詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++二進(jìn)制&順序讀寫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++vector的用法你都知道嘛

    C++vector的用法你都知道嘛

    這篇文章主要為大家詳細(xì)介紹了C++中vector的用法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 在C++中反射調(diào)用.NET的方法(三)

    在C++中反射調(diào)用.NET的方法(三)

    在.NET與C++之間傳輸集合數(shù)據(jù)的方法是怎么樣的呢?接下來(lái)通過(guò)本文給大家分享在C++中反射調(diào)用.NET(三),需要的朋友參考下吧
    2017-02-02
  • 一文詳解Qt如何讀取和寫入配置文件的數(shù)據(jù)

    一文詳解Qt如何讀取和寫入配置文件的數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了在Qt中如何實(shí)現(xiàn)讀取和寫入配置文件的數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++實(shí)現(xiàn)單例模式日志輸出詳解

    C++實(shí)現(xiàn)單例模式日志輸出詳解

    這篇文章主要為大家詳細(xì)介紹了C++中單例模式的相關(guān)知識(shí),并給出單例模式日志實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • OpenGL實(shí)現(xiàn)鼠標(biāo)移動(dòng)方塊

    OpenGL實(shí)現(xiàn)鼠標(biāo)移動(dòng)方塊

    這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)鼠標(biāo)移動(dòng)方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷的完整過(guò)程

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷的完整過(guò)程

    這篇文章主要給大家介紹了關(guān)于利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)易版掃雷的完整過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C語(yǔ)言的指針類型詳細(xì)解析

    C語(yǔ)言的指針類型詳細(xì)解析

    C語(yǔ)言的指針類型包括兩方面的信息:一是地址,存放在指針變量中;二是類型信息,關(guān)乎于讀寫的長(zhǎng)度,沒有存儲(chǔ)在指針變量中,位于用該指針讀寫時(shí)的mov指令中,不同的讀寫長(zhǎng)度對(duì)應(yīng)的mov指令不同
    2013-09-09
  • C語(yǔ)言實(shí)現(xiàn)手寫字符串處理工具的示例代碼

    C語(yǔ)言實(shí)現(xiàn)手寫字符串處理工具的示例代碼

    這篇文章主要為大家詳細(xì)介紹了利用C語(yǔ)言實(shí)現(xiàn)手寫字符串處理工具的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-09-09
  • C/C++實(shí)現(xiàn)三路快速排序算法原理

    C/C++實(shí)現(xiàn)三路快速排序算法原理

    這篇文章主要為大家詳細(xì)介紹了C/C++實(shí)現(xiàn)三路快速排序算法原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++基礎(chǔ)入門篇之強(qiáng)制轉(zhuǎn)換

    C++基礎(chǔ)入門篇之強(qiáng)制轉(zhuǎn)換

    這篇文章主要給大家介紹了關(guān)于C++基礎(chǔ)入門篇之強(qiáng)制轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論