如何将结构导出到文件,然后对文件进行内存映射
How to export a struct to a file, and then memory map the file?
我有一个结构,我想导出到一个文件,然后mmap()该文件。一个问题是该结构有一个字符串的成员变量,我不确定 mmap 如何处理它。在本例中,所有这些字符串的大小相同,为 8 个字符。我正在Windows上工作,尽管我正在使用我在网上找到的mmap()函数,它应该复制Linux mmap()函数。
结构本身定义为:
struct testStruct
{
string testString;
unsigned int testInt;
unsigned int tsetArr[9];
};
是否可以为对象定义 sizeof() 的返回值?
是否可以映射包含结构数据的文件?
我必须使用什么代码将结构导出到文件,然后对其进行 mmap?
> C++标准不保证std::string
的表示,因此这不起作用。 std::string
可以(并且通常会)将其内容分配到堆上的任何位置,因此您将存储指针和大小成员,而不是字符串本身。
不过,具有编译时常量大小的char
数组(例如 tsetArr
)应该可以工作。
是否可以为对象定义 sizeof() 的返回值?
不。 sizeof
不是一个函数,所以你不能重载它(严格来说,它有一个值,但没有返回值,因为它不会从任何地方返回;它由编译器扩展为常量)。
是否可以对包含
struct
数据的文件进行映射?
可能,是的,但我建议不要这样做;你的代码将不可移植,甚至可能无法移植到同一平台上的不同编译器,你的struct
是一成不变的。无论如何,如果您仍想这样做,只需mmap
没有指针成员的 POD(普通旧数据),并在struct
中放置一个 unsigned version
成员,每次更改其定义时都会递增该成员。
struct testStruct
{
char testString[9];
unsigned int testInt;
unsigned int tsetArr[9];
};
相关文章:
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何从文件中读取值,然后使用它们来初始化 2D 数组C++
- 生成随机.txt文件,10行,10列。充满随机:"*"、"#"、"@"。然后将随机字符替换为'P'
- 按单词搜索文件,然后在C++中打印特定行数
- 将整个二进制文件读入缓冲区,然后以特定格式解析
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 我正在尝试从输入文件中读取,然后使用它们的子字符串比较字符串的特定部分
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- 如何将 id 写入文件,然后将其读回?
- 从文本文件读取,然后将项目存储到列表中
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 使用函数打开文件,然后让其他函数利用该文件?
- 如何添加mp3文件作为资源,然后播放
- C++读取大文件并将其保存到字符串中,然后删除特定的随机单词
- 如何将文件逐行读取到矢量中,然后打印矢量
- 如何将QGraphicsItem QList保存到文件中,然后读取它?Qt c++
- 是否可以将前向声明和常规声明合并到一个文件中,然后像分开一样使用它?
- 为什么我的将向量保存到文件然后再次读出的方法不起作用?
- 更改目录的生成文件然后编译代码
- c++ CURL post文件然后得到响应错误