首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列化结构

序列化结构
EN

Stack Overflow用户
提问于 2009-04-01 22:58:42
回答 4查看 460关注 0票数 0

我正在做一个家庭作业项目,我试图将库存数据存储到一个文件中。

库存数据大小不应该太大,因为从技术上讲,没有人会真正使用它。

我需要将这些内容写入一个文件:

·项目描述·手头数量·批发成本·零售成本·库存添加日期

,我需要创建一个允许我这样做的接口:

·向文件中添加新记录。显示文件中的任何记录。更改文件中的任何记录

结构将是这方面最简单的方式,海事组织。如果我能弄清楚如何将结构读/写到文件中,这应该是非常容易的。

如果你能提供一个关于如何做到这一点的小例子,我将非常感激。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-01 23:03:37

IOStream库做的

类提供了将数据作为输出流写入文件的接口。 如果流类提供作为输入流从文件中读取数据的接口。

编辑- 示例

票数 1
EN

Stack Overflow用户

发布于 2009-04-01 23:06:27

问你的老师,你能使用boost库吗?

如果是,请阅读boost血清化教程,它包含一个简单的示例:0/libs/序列化/doc/tutorial.html

但是,如果您想要了解如何处理文件,则应该在不需要任何帮助或增强的情况下这样做。

如果您想使用std::iofstreams,您应该决定支持什么格式:

  • 文本-在这种情况下,最好的方法是定义operator<<和operator>>,并将它们用于编写结构文件或读取;
  • 二进制-您的结构应该是POD (普通旧数据),不应该包含指针-您将使用读和写流方法。 二进制文件示例: http://www.codeguru.com/forum/showthread.php?t=269648
票数 2
EN

Stack Overflow用户

发布于 2009-04-01 23:10:24

如果您不介意非常低的级别,则可以通过将指向struct的指针转换为void*并使用sizeof()获取结构长度来复制结构的进出。(IIRC它们是一种将空缓冲区转储/读取到/从文件中读取的方法)

注意,只有在数据没有指针/引用/等等的情况下,这才有效。

我比C++更喜欢C's IO,所以:

代码语言:javascript
复制
typedef struct { int hi; int mon; char[35] dat; } S;

S s;
S arr[22];
int f;
代码语言:javascript
复制
  // write
f = open(/* I forget the args*/);

  // one
if(sizeof(s) != write(f, &s, sizeof(s))) Error();
  // many
if(sizeof(arr) != write(f, arr, sizeof(arr))) Error();

close(f);
代码语言:javascript
复制
  // read
f = open(/* I forget the args*/);

  // one
if(sizeof(s) != read(f, &s, sizeof(s))) Error();
  // many
if(sizeof(arr) != read(f, arr, sizeof(arr))) Error();

close(f);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/707664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档