ofstream.put (); не писать целые?

Я пытаюсь зашифровать файл очень простым способом. Преобразование текста 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

Решение

В

output.put(rep);

Вы выводите rep как персонаж. Так что любой символ, который имеет целочисленное значение rep это то, что отображается В этом случае это ^C, Если вы хотите вывести фактическое значение rep тогда вы должны использовать >>

output >> rep;

Вы также можете использовать

output.put('0' + rep);

Это будет работать только для вывода 0-9

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]