[英]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個字節),並且將采用以下方式進行結構化:
您需要具有預處理器#pragma pack(1)以字節對齊結構,否則根據處理器體系結構(32位或64位)對其進行對齊。 還要檢查此#pragma pack效果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.