我有基本代码,如下所示:
while(inputfileStream.good())
{
for(int i = 0;i<levels;i++)
{
inputfileStream.open(_file,ios::in | ios::out | ios::binary);
for(int i = 0,kPOS=0;i<=fsize;i++,kPOS++)
{
if(kPOS > Ksize)
kPOS=0;
char tempchar = 0;
inputfileStream.seekg(i,ios::beg);
inputfileStream.get(tempchar);
tempchar+=(int)_encription_key[kPOS];
inputfileStream.seekg(i,ios::beg);
inputfileStream.put(tempchar);
}
inputfileStream.close();
}
}
这是一个基本的加密器。我只有一个问题:对于每个加密级别,我必须重新打开文件以获取其内容。否则如果我不这样做,当我从每个级别解密文件时,我都有相同的旧文本。
除了致电open()
和close()
之外,你能帮助我更好地重新阅读文件内容吗?
答案 0 :(得分:0)
不是关闭和打开文件,而是
如果在fstream上设置例外(),这可能会更清楚。由于fstream不处于good()状态,您很可能在某些点上看不到加密工作。
答案 1 :(得分:-1)
好吧,如果你写的是输出文件,而是覆盖输入......
inputfileStream.put(...)。你会谈到这种事情。
更不用说,看看你在做什么,你可以颠倒循环。
读取一个字节,执行每个加密级别,然后将其写出来......