我正在尝试逐字节读取二进制文件,用于一些简单的加密 - 解密程序:
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()只会接受一个指针作为它的第一个参数。
有人能指出我哪里出错吗?
答案 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。