ofstream.put();不写整数?

时间:2015-10-03 15:26:52

标签: c++ file output writing

我正在尝试以非常简单的方式加密文件。例如,将文本aabcdee转换为a2bcde2。

然而,当我执行文件时,我在输出文件中得到^ Cbcde ^ C而不是a2bcde2。

我猜是ofstream.put();不会将整数写入文件?我该如何以正确的方式做到这一点?

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int main()
{
    ifstream input;
    ofstream output;
    char kar;
    input.open ("file.txt", ios::in);
    if ( ! input)
    {
        cout << "File not opened!" << endl;
        return 1;
    }

    output.open ("output.txt", ios::out);
    char prevkar = '\n';
    kar = input.get ();
    int rep = 1;

    while ( ! input.eof () )
    {
        if (kar == prevkar)
        {
           rep++;
           kar = input.get();

        }
        else
        { 
           if (rep > 1)
           {
               output.put(rep);
           }
            output.put (kar);
            prevkar = kar;
            kar = input.get ();
        }
    }
    input.close ();
    output.close ();

    return 0;
}

1 个答案:

答案 0 :(得分:0)

output.put(rep);

您正在输出rep作为角色。因此,具有整数值rep的任何字符都是显示的内容。在这种情况下是^C。如果您想输出rep的实际值,则应使用>>

output >> rep;

您也可以使用

output.put('0' + rep);

这只能输出0-9