逐字节读取文件

时间:2017-07-18 07:49:56

标签: c++

我正在尝试逐字节读取二进制文件,用于一些简单的加密 - 解密程序:

iftream f("a.in", ios::binary | ios::in);
ofstream g("a.out");
char x1, x2;
int x,j=0;
f.seekg(0);
f.get(&x1,sizeof(char));
while(!f.eof())
{
    f.get(&x2,sizeof(char));
    if(j==10)
    {
        g<<'\n';
        j=0;
    }
    x=x1+x2;
    x1=x2;
    g<<x<<' ';
    j++;
}

代码编译,但是while()卡在无限循环中,这是因为get()函数实际上并没有从文件中读取任何内容。

我想这可能是因为取消引用了chars,但是get()只会接受一个指针作为它的第一个参数。

有人能指出我哪里出错吗?

2 个答案:

答案 0 :(得分:0)

使用 f.read 代替获取

 f.read(&x1, sizeof(char));

答案 1 :(得分:0)

while(f.get(x2))
{
    if(j==10)
    {
        g<<'\n';
        j=0;
    }
    x=x1+x2;
    x1=x2;
    g<<x<<' ';
    j++;
}

@Mat提供了explanation in this link