我正在尝试以非常简单的方式加密文件。例如,将文本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;
}
答案 0 :(得分:0)
在
output.put(rep);
您正在输出rep
作为角色。因此,具有整数值rep
的任何字符都是显示的内容。在这种情况下是^C
。如果您想输出rep
的实际值,则应使用>>
output >> rep;
您也可以使用
output.put('0' + rep);
这只能输出0-9