如何将结构导出到文件,然后用内存映射文件?

| 我有一个要导出到文件的结构,然后将其mmap()导出。一个问题是该结构的成员变量是字符串,我不确定mmap将如何处理它。在这种情况下,所有这些字符串的大小均相同,为8个字符。我在Windows上工作,尽管我使用的是我在网上找到的mmap()函数,该函数应该复制Linux mmap()函数。 该结构本身定义为:
struct testStruct
{
    string testString;
    unsigned int testInt;
    unsigned int tsetArr[9];
};
是否可以为对象定义sizeof()的返回值? 映射包含结构数据的文件是否可行? 我必须使用什么代码将结构导出到文件,然后映射它?     
已邀请:
C ++标准不保证ѭ1的表示形式,因此这是行不通的。
std::string
可能(并且通常会)将其内容分配到堆上的任何位置,因此您将存储一个指针和一个size成员,而不是字符串本身。 但是,具有编译时常数大小的“ 3”数组(例如“ 4”)应该可以工作。   是否可以为对象定义sizeof()的返回值? 不能。
sizeof
不是函数,因此您不能重载它(严格来说,它有一个值,但没有返回值,因为它不会从任何地方返回;它被扩展为常数。编译器)。   可以对包含“ 6”个数据的文件进行映射吗? 可能的,是的,但我建议不要这样做。您的代码将无法移植,甚至无法移植到同一平台上的不同编译器中,并且您的
struct
是一成不变的。如果仍然要这样做,则仅使用没有指针成员的
mmap
POD(普通旧数据),并在
struct
中放置一个
unsigned version
成员,每次其定义更改时都会递增。     
struct testStruct
{
    char testString[9];
    unsigned int testInt;
    unsigned int tsetArr[9];
};
    

要回复问题请先登录注册