簡體   English   中英

將結構寫入文件

[英]Write struct to file

當我向文件寫入結構時,如何在文件中設置內存? 例如,以下結構和功能:

struct vector3D
{
    public:
        float x, y, z;

    vector3D(float modelX, float modelY, float modelZ)
    {
        x = modelX;
        y = modelY;
        z = modelZ;
    }

    vector3D()
    {
        x = 0;
        y = 0;
        z = 0;
    }
}


inline void writeVector3D(vector3D vec, FILE *f)
{
    fwrite((void*)(&vec), sizeof(vector3D), 1, f);
}

這段代碼在main中:

vector3D vec(1, 2, 3);
writeVector3D(vec, file);

文件中的信息如何設置? 123嗎? 還是struct有不同的設置?

您可能需要閱讀以下內容:

數據將按照它們在內存中的寫入順序進行寫入,包括對齊間隙。

它將其寫入為順序二進制流。

文件的大小將為struct的大小

在您的情況下,它將總共寫入12個字節(每個浮點數4個字節),並且將采用以下方式進行結構化:

  • 前4個字節代表浮點數1
  • 后4個字節代表浮點數2
  • 后4個字節代表浮點數3

您需要具有預處理器#pragma pack(1)以字節對齊結構,否則根據處理器體系結構(32位或64位)對其進行對齊。 還要檢查此#pragma pack效果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM