C ++在一个任务中读/写txt文件 - >交换字符

时间:2011-03-30 22:22:04

标签: c++ file fstream

我尝试在一个任务中打开一个用于读/写的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文件仍显示相同的内容。

1 个答案:

答案 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();
}
相关问题