你的这个要求比较苛刻,或者说无法实现!我给你提供几个解决方案吧!
1:用文本文件,每个项目用特定的字符隔开,比如逗号,空格之类的
2:还是二进制保存,但是还是用一个特定的数来隔开,一般选一个不常用的数,比如0xff(255),
当然这两个方案都会遇到一个问题就是你要保存的数据出现用来分割的字符或数据时要转义,类似于源代码中\\代表\一样,但是要是分隔符选取得当的话也可以不实现转义
3:还有一个方案,就是定长,比如你这里的这个结构体,那么可以name保存10个字节,int保存4个字节,temp a={"zhangsan",14};保存为7a68616e6773616e00000000000e(我写的16进制数,也就是zhangsan\0\00x0000000e,相信你能理解),这样你每次读14个字节,前10个字节就是name,字符串,后4个字节就是n,int型!
你自己考虑下用那个方案,源码我就不给你写了!
#include
#include
#include
using namespace std;
struct temp
{
char name[10];
int n;
};
void write(const temp& a)
{
ofstream fout("1.dat",ios::binary);
fout.write(reinterpret_cast
fout.write(reinterpret_cast
}
void read(temp& a)
{
ifstream fin("1.dat");
fin.read(reinterpret_cast
fin.read(reinterpret_cast
}
int main()
{
temp a={"zhangsan",14},b;
write(a);
read(b);
cout<
zhangsan14
请按任意键继续. . .
你更苛刻的要求,或无法实现!我给你几个解决方案!
1:与特定的字符,如逗号分隔的文本文件,每个项目,空间,如
2:或二进制保存,但仍与一个具体的数字分离一般选举使用的号码,如为0xFF(255)
当然,这两个程序会遇到一个问题,你要保存所使用的数据分割为了逃避,在源代码中的字符或数据类似于\ \ \相同,但如果选择了正确的分离字符不能逃脱
3:还有一个程序长,如你在这里的结构,你可以保存10 - 组的名称,诠释节省4个字节,温度= {“张三”,14};保存7a68616e6773616e00000000000e(我写的十六进制数是张三\ 0 \ 00x0000000e,我相信你能理解),所以每次读14个字节10字节的名称,字符串,4个字节是n,int类型!
你认为自己是根据该程序的源代码,我不给你写信!