Запись потока в двоичный файл ведет себя странно

Поэтому я пишу небольшое задание, и оно требует ввода из файла.bin. Поэтому я также написал небольшой алгоритм, который переводит.txt в.bin (только числа в соответствии с заданием). Проблема в том, что функция... действует. По какой-то причине добавляет дополнительный байт на 12 число. Понятия не имею почему. Также, очевидно, прерывается чтение номера.

Вопрос в том, почему и как мне это исправить?

Сам алгоритм:

        ifstream txtIn;
        txtIn.open("input.txt");
        if (!txtIn.is_open()) {
            cout << "Ошибка чтения входного .txt файла!\n";
            return;
        }
        ofstream binOut;
        long buf;
        binOut.open("input.bin");
        binOut.clear();
        do {
            txtIn >> buf;
            binOut.write((char*)&buf, sizeof(long));
        } while (!txtIn.eof());
        txtIn.close();
        binOut.close();
        cout << "Конверсия завершена\n";

input.txt:

6 6
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36

Input.bin:

06 00 00 00 06 00 00 00 01 00 00 00 02 00 00 00
03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00
07 00 00 00 08 00 00 00 09 00 00 00>0D<0A 00 00
00 0B 00 00 00 0C 00 00 00 0D 00 00 00 0E 00 00
//and so on//

Кроме того, любые устаревшие и / или архаичные решения являются частью задания. К несчастью.

0 ответов

Другие вопросы по тегам