Дополнительные данные, которые вы видите, являются действительным выводом при декодировании данных в "secret.txt"
.
Я не уверен, что это именно то, что вам нужно, но знаете ли вы, что вы читаете и пишете в один и тот же файл каждый раз, когда запускаете приложение?
Вы будете добавлять все больше и больше «декодированных» данных в файл, и, следовательно, вы получите дополнительный вывод, на который ссылаетесь.
Также, есть проблема с вашим while
-циклом.
fin.good ()
будет оставаться верным до тех пор, пока некоторые из битов ошибки не будут установлены внутри fin
, хотя он будет слишком часто входить в цикл, так как вы должны проверить состояние потока сразу после вызова getline (fin, ...)
.
В настоящее время чтение не удастся, но вы все равно будете обрабатывать «непрочитанные» данные.
std::getline
вернет объект потока, и поскольку std::istream
(а также std::ostream
) неявно может быть преобразован в логическое значение, чтобы проверить его текущее состояние, вы должны использовать его как условие цикла. *
Измените ваш цикл на что-то, как показано ниже, и посмотрите, решит ли это вашу проблему.
while (getline (fin, line))
{
for (int i = 0; i < line.length(); i++) // for each char in the string...
line[i]--; // bump the ASCII code down by 1
fout << line << endl; // display on screen
}