我有一个要转换为二进制的文本文件。它是一个 7 位数的号码。后跟一个名称,然后重复列出许多名称。
1234567 First Last
7654321 First Last
因为它是一个 7 位数的 int,所以我无法使用这种带有 int 结构的方法将它输出到二进制文件。每当我写入它时,它都会给我一个非常大的 .DAT(二进制)文件,即使只有 3 个名称。有没有更好的输出方法让我的二进制 .dat 文件看起来大约 200kb 并且最终不会在 20mb+ 范围内?
const int MAX = 50;
struct StudentRegistration{
int studentID;
char name[MAX];
};
fstream afile;
ifstream infile;
afile.open (fileName2, ios::out | ios::binary);
infile.open (fileName1);
while (infile >> s.studentID)
{
infile.get(space);
infile.getline(&s.name, MAX);
afile.seekp((s.studentID-1)*sizeof(StudentRegistration), ios::beg);
afile.write(reinterpret_cast <const char *>(&s), sizeof(s));
}
afile.close();
infile.close();