Я пытаюсь зашифровать файл очень простым способом. Преобразование текста 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;
}
В
output.put(rep);
Вы выводите rep
как персонаж. Так что любой символ, который имеет целочисленное значение rep
это то, что отображается В этом случае это ^C
, Если вы хотите вывести фактическое значение rep
тогда вы должны использовать >>
output >> rep;
Вы также можете использовать
output.put('0' + rep);
Это будет работать только для вывода 0-9
Других решений пока нет …