最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?二進(jìn)制文件讀寫方式及示例詳解

 更新時(shí)間:2023年04月25日 09:14:23   作者:碼出世界的淡水魚  
這篇文章主要為大家介紹了C++?二進(jìn)制文件讀寫實(shí)現(xiàn)方式及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

C++ 二進(jìn)制文件讀寫

C++語言提供了使用二進(jìn)制文件進(jìn)行數(shù)據(jù)處理的方法,可以讀入和寫出數(shù)據(jù),保留數(shù)據(jù)的二進(jìn)制格式,而不會(huì)受到字符編碼的干擾。這種方法的使用非常靈活,尤其是處理大量數(shù)據(jù)的時(shí)候。

二進(jìn)制文件是由一連串字節(jié)組成的,可以保留數(shù)據(jù)的真實(shí)值,而不需要像文本文件那樣以可讀的方式呈現(xiàn)。每個(gè)字節(jié)都有一個(gè)二進(jìn)制值,可以存儲(chǔ)各種類型的數(shù)據(jù),如字符、整數(shù)、浮點(diǎn)數(shù)等。因此,相對(duì)于文本文件,二進(jìn)制文件可以更快地讀取、寫入數(shù)據(jù),而且能夠減少磁盤空間的占用。此外,二進(jìn)制文件還可以用于存儲(chǔ)圖像、聲音、視頻等非文本數(shù)據(jù)。

一、二進(jìn)制文件的讀寫方式

二進(jìn)制文件的讀寫方式有兩種:讀入和寫出。讀入時(shí),將二進(jìn)制數(shù)據(jù)讀入到內(nèi)存,寫出時(shí),將內(nèi)存中的數(shù)據(jù)寫入二進(jìn)制文件。在C++語言中,可以使用兩種標(biāo)準(zhǔn)庫函數(shù)完成文件讀寫操作,分別是fread()和fwrite()函數(shù)。下面我們通過代碼來了解這兩個(gè)函數(shù)如何使用。

二、C++二進(jìn)制文件讀寫示例

寫入二進(jìn)制文件:

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    // 定義一個(gè)結(jié)構(gòu)體
    struct student
    {
        int id;             // 學(xué)號(hào)
        char name[20];      // 姓名
        double score;       // 成績
    } s1 = {1001, "張三", 90.5}, s2 = {1002, "李四", 80.5};
    // 將結(jié)構(gòu)體寫入二進(jìn)制文件
    ofstream fout("student.dat", ios::binary);
    if (fout)
    {
        fout.write((char*)&s1, sizeof(student));
        fout.write((char*)&s2, sizeof(student));
        fout.close();
    }
    return 0;
}

在這個(gè)例子中,我們創(chuàng)建了一個(gè)叫做student的結(jié)構(gòu)體并初始化了2個(gè)結(jié)構(gòu)體數(shù)據(jù)。然后用C++標(biāo)準(zhǔn)庫函數(shù)ofstream打開文件student.dat,并以二進(jìn)制方式打開,并將結(jié)構(gòu)體寫入到文件中。最后關(guān)閉文件。

讀取二進(jìn)制文件:

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    // 定義一個(gè)結(jié)構(gòu)體
    struct student
    {
        int id;             // 學(xué)號(hào)
        char name[20];      // 姓名
        double score;       // 成績
    } s;
    // 從二進(jìn)制文件中讀取結(jié)構(gòu)體數(shù)據(jù)
    ifstream fin("student.dat", ios::binary);
    if (fin)
    {
        fin.read((char*)&s, sizeof(student));
        while (!fin.eof())
        {
            cout<< "學(xué)號(hào):" << s.id<< ",姓名:" << s.name<< ",成績:" << s.score<< endl;
            fin.read((char*)&s, sizeof(student));
        }
        fin.close();
    }
    return 0;
}

在這個(gè)例子中,我們使用了C++標(biāo)準(zhǔn)庫函數(shù)ifstream打開了文件student.dat,并以二進(jìn)制方式打開,然后使用fin.read()讀取前面寫入的兩條記錄。因?yàn)槲覀冎牢募杏涗浀臄?shù)量,所以我們使用一個(gè)while循環(huán),直到文件末尾為止。在每次循環(huán)中,使用cout打印出每個(gè)學(xué)生的學(xué)號(hào)、姓名和成績,并使用fin.read()讀取下一條記錄。最后關(guān)閉文件。

總結(jié):

以上就是C++中使用二進(jìn)制文件進(jìn)行數(shù)據(jù)處理的方法,通過fwrite()和fread()函數(shù)可以方便地進(jìn)行二進(jìn)制數(shù)據(jù)的讀寫操作,而使用fstream.h向文件中寫入二進(jìn)制數(shù)據(jù)則更加靈活。需要注意的是,在讀寫操作時(shí)需要注意文件的打開方式,以及指針的位置等問題。

相關(guān)文章

  • visual?studio?2022一個(gè)不易發(fā)現(xiàn)的問題

    visual?studio?2022一個(gè)不易發(fā)現(xiàn)的問題

    本文主要介紹了visual?studio?2022一個(gè)不易發(fā)現(xiàn)的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 對(duì)C語言編程標(biāo)準(zhǔn)以及聲明的基本理解

    對(duì)C語言編程標(biāo)準(zhǔn)以及聲明的基本理解

    這篇文章主要介紹了對(duì)C語言編程標(biāo)準(zhǔn)以及聲明的基本理解,有助于對(duì)C語言編寫時(shí)的結(jié)構(gòu)有更加清晰的認(rèn)識(shí),需要的朋友可以參考下
    2015-11-11
  • C++實(shí)現(xiàn)LeetCode(198.打家劫舍)

    C++實(shí)現(xiàn)LeetCode(198.打家劫舍)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(198.打家劫舍),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++構(gòu)造函數(shù)一些常見的坑

    C++構(gòu)造函數(shù)一些常見的坑

    這篇文章主要給大家分享的是C++構(gòu)造函數(shù)一些常見的坑,文章圍繞C++構(gòu)造函數(shù)的相關(guān)資料展開關(guān)于C++構(gòu)造函數(shù)坑的內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-01-01
  • 深入理解c++常成員函數(shù)和常對(duì)象

    深入理解c++常成員函數(shù)和常對(duì)象

    下面小編就為大家?guī)硪黄钊肜斫鈉++常成員函數(shù)和常對(duì)象。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧
    2016-05-05
  • 利用QT實(shí)現(xiàn)UDP聊天小程序

    利用QT實(shí)現(xiàn)UDP聊天小程序

    這篇文章主要為大家詳細(xì)介紹了潤滑利用QT的UDP技術(shù),實(shí)現(xiàn)兩個(gè)QT程序之間的聊天程序。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-11-11
  • OpenCV實(shí)現(xiàn)最小外接正矩形

    OpenCV實(shí)現(xiàn)最小外接正矩形

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)最小外接正矩形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++中std::distance 和 .size()的區(qū)別小結(jié)

    C++中std::distance 和 .size()的區(qū)別小結(jié)

    在C++中,std::distance和.size()雖然都能獲取元素?cái)?shù)量,但二者的設(shè)計(jì)目的、適用場景和性能特性有顯著差異,下面就來介紹一下兩者的區(qū)別,感興趣的可以了解一下
    2025-07-07
  • c異或運(yùn)算 c異或運(yùn)算符號(hào)

    c異或運(yùn)算 c異或運(yùn)算符號(hào)

    位運(yùn)算的運(yùn)算分量只能是整型或字符型數(shù)據(jù),位運(yùn)算把運(yùn)算對(duì)象看作是由二進(jìn)位組成的位串信息,按位完成指定的運(yùn)算,得到位串信息的結(jié)果
    2014-06-06
  • C++11?右值引用的使用場景分析

    C++11?右值引用的使用場景分析

    c++11中新增了右值引用的語法,本文主要說明左值引用和右值引用的使用場景,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-06-06

最新評(píng)論

治多县| 湘阴县| 山西省| 满城县| 乐至县| 和平区| 岫岩| 宝清县| 陇南市| 图们市| 富顺县| 来凤县| 同德县| 汉寿县| 新干县| 滨海县| 白沙| 龙陵县| 蒙阴县| 枞阳县| 兰溪市| 镇宁| 三亚市| 兴宁市| 泌阳县| 高青县| 酉阳| 临沭县| 台湾省| 新津县| 长白| 珲春市| 思茅市| 河津市| 苍山县| 胶南市| 张家界市| 新疆| 凉山| 武功县| 广平县|