我正在做一个家庭作业项目,我正在尝试将库存数据存储到文件中。
库存数据大小不应太大,因为从技术上讲,没有人会真正使用它。
我需要将这些内容写入文件:
•项目描述 •手头数量 •批发成本 •零售成本 •添加到库存的日期
我需要创建一个允许我这样做的界面:
•将新记录添加到文件中 •显示文件中的任何记录 •更改文件中的任何记录
结构将是最简单的方法来实现这个imo。如果我能弄清楚如何读取/写入文件结构,这应该非常简单。
如果您能提供一个如何做到这一点的小例子,我将非常感激。
谢谢!
答案 0 :(得分:2)
问你的老师,你能用升级库吗? 如果是,请阅读boost serilization教程,它包含一个简单的示例:http://www.boost.org/doc/libs/1_38_0/libs/serialization/doc/tutorial.html
但是如果你想了解如何使用文件,你应该在没有任何帮助或提升的情况下完成这项工作。
如果您想使用std :: [io] fstreams,您应该决定支持哪种格式:
- text - 对于这种情况,最好的方法是定义operator<<和运算符>>并用它们来写文件或阅读结构;
- binary - 你的结构应该是POD(普通旧数据)并且不应该包含指针 - 你将使用读写流方法。
二进制文件的示例:
http://www.codeguru.com/forum/showthread.php?t=269648
答案 1 :(得分:2)
如果你不介意真正的低级别,你可以通过将指向结构的指针强制转换为void*
并使用sizeof()
来获取结构长度来复制结构。 (IIRC是一种向/从文件中转储/读取空缓冲区的方法)
请注意,仅当数据没有指针/引用/等时才会起作用。
我比C ++更喜欢C's IO:
typedef struct { int hi; int mon; char[35] dat; } S;
S s;
S arr[22];
int f;
// 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);
// 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 :(得分:1)
答案 3 :(得分:0)
我会选择XML;它是结构化的,它是基于文本的,所以你可以用任何文本编辑器来查看它。