0

我有一个要转换为二进制的文本文件。它是一个 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();
4

1 回答 1

0

我删除了 seekp 行,它现在似乎做了我想做的事。

于 2013-01-13T08:09:33.110 回答