C ++: оператор извлечения (>>) пропускает несколько байтов - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь написать программу, которая читает побайтовый файл (в данном случае исполняемый файл) и записывает его в новый файл, который затем должен быть таким же.

char x;

std::ifstream infile("C:/Users/_user_/Desktop/test.exe", std::ios::in | std::ios::binary);
std::ofstream outfile("C:/Users/_user_/Desktop/out.exe", std::ios::out | std::ios::app | std::ios::binary);

while (infile >> x)
{
    outfile << x;
}

outfile.close();
infile.close();

В этом примере выходной файл заканчивается на 284 байта короче. Здесь - сравнение 800 первых байтов в программе просмотра в шестнадцатеричном формате. 70-й байт входного файла '09' пропускается. Я, вероятно, упускаю что-то очевидное, но не могу понять, что.

Заранее спасибо

1 Ответ

0 голосов
/ 18 ноября 2018

Чтобы избежать пропуска пробелов, попробуйте put и get для неформатированных потоков.

while (infile.get(x)) {
    outfile.put(x);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...