,从文件读出的一个结构体,想对他进行一些维护工作完后写回文件
求助,从文件读出的一个结构体,想对他进行一些维护工作完后写回文件。
求助,从文件读出的一个结构体,想对他进行一些维护工作完后写回文件。
用什么比较好,STL的话
结构体里面有4五个字段,字符串和int
需要,根据一些字段实现删除操作。
------解决方案--------------------
用结构体表达字段的集合,而用STL表达条目,例如:
------解决方案--------------------
fread 和fwrite,offset 这些不能实现么?
------解决方案--------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决方案--------------------
我喜欢序列化后写入
------解决方案--------------------
这样的需求为什么不用数据库?比如轻量级的SQLite就很合适的。
------解决方案--------------------
可以用两种方法,存储,删除数据,需要零件一个文件,或者移动文件的数据
下面分三个情况说明,1)文本文件方式存储,2)二进制方式存储,3)删除数据的方法。
1)文本文件方式存储:
数据按文本格式存储,全部转换成字符串,存储为文本文件;
每个结构一行,中间用 空格,逗号,分号等 字符串里不会出现的,分隔符分开。
说白了,就是按照一定格式存储为字符串;
读出时,按格式读出。
这里可能会存在某些读写陷阱。
格式需要仔细设计。
优点是数据是文本格式的,查看方便,直接用文本编辑器,就可以查看了。
修改数据也容易。
2)二进制方式存储
数据按照二进制存储,定长读写。
2.1)每个数据确定存储长度,包括字符串,都按照定长存储。
读取时一个数据一个数据读出。
这种方式,可以保证在,任何平台上数据严格一致,即解决了,数据持久化的问题。
求助,从文件读出的一个结构体,想对他进行一些维护工作完后写回文件。
用什么比较好,STL的话
结构体里面有4五个字段,字符串和int
需要,根据一些字段实现删除操作。
------解决方案--------------------
用结构体表达字段的集合,而用STL表达条目,例如:
typedef struct
{
int type;
char name[20];
char sex;
}person_t;
std::list<person_t> persons;
------解决方案--------------------
fread 和fwrite,offset 这些不能实现么?
------解决方案--------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决方案--------------------
我喜欢序列化后写入
------解决方案--------------------
这样的需求为什么不用数据库?比如轻量级的SQLite就很合适的。
------解决方案--------------------
可以用两种方法,存储,删除数据,需要零件一个文件,或者移动文件的数据
下面分三个情况说明,1)文本文件方式存储,2)二进制方式存储,3)删除数据的方法。
1)文本文件方式存储:
数据按文本格式存储,全部转换成字符串,存储为文本文件;
每个结构一行,中间用 空格,逗号,分号等 字符串里不会出现的,分隔符分开。
说白了,就是按照一定格式存储为字符串;
读出时,按格式读出。
这里可能会存在某些读写陷阱。
格式需要仔细设计。
优点是数据是文本格式的,查看方便,直接用文本编辑器,就可以查看了。
修改数据也容易。
2)二进制方式存储
数据按照二进制存储,定长读写。
2.1)每个数据确定存储长度,包括字符串,都按照定长存储。
读取时一个数据一个数据读出。
这种方式,可以保证在,任何平台上数据严格一致,即解决了,数据持久化的问题。