我尝试在一个任务中打开一个用于读/写的txt文件。 我之前的目标是通过数组中保存的字符交换一些字符:
void Inputfile::decryptFile(string filename)
{
for(int i=0;i<15;i++)
{
fstream filedest(filename.c_str(), ios::in | ios::out);
if(!filedest)
cerr << "Konnte Zieldatei nicht oeffnen!\n";
else
cout << endl << filename << " geoeffnet zum entschluesseln!\n";
while(!filedest.eof())
{
filedest.get(ch);
if(ch == char(this->mostcharsencrypted[i]))
{
filedest.put(char(this->mostchars[i]));
}
}
filedest.close();
cout << "Fertig!";
}
}
mostcharsencrypted []和mostchars []是包含字符的整数数组。我确信只有8位Ansii值,并且我甚至在调用此方法之前检查它。
因此,如果当前读取的字符是当前数组位置(i:0 - 14),那么我想将txt文件中的字符与来自mostchars []的字符进行交换。
目前我可以看到我完全匹配的类型,但我的txt文件仍显示相同的内容。
答案 0 :(得分:0)
更换文件时,通常使用两个单独的流进行输入和
单独输出。
如果您需要为输入和输出使用一个流,
while
循环将如下所示:
while(filedest)
{
streampos p = filedest.tellg();
if(!filedest.get(ch)) break;
filedest.seekp(p);
char ch2 = (ch == char(this->mostcharsencrypted[i])) ?
char(this->mostchars[i]) : ch;
filedest.put(ch2);
filedest.sync();
}