Вывод символов в текстовый файл

Код выполняет конвертацию из CP437 в UTF-8 и записывает результат в файл.

Если вывводить в файл лишь конвентируемые символы (убираю else fout << symb;), то всё работает, но если я хочу записать в файл и символы из таблицы ASCII, то получаю следующее:введите сюда описание изображения

#include <iostream>
#include <fstream>
#include <map>
using namespace std;

map <int, int> CP437 = {
{0xb0,  0x2591},
{0xb1,  0x2592},
{0xb2,  0x2593},
{0xb3,  0x2502},
{0xb4,  0x2524},
{0xb5,  0x2561},
{0xb6,  0x2562},
{0xb7,  0x2556},
{0xb8,  0x2555},
{0xb9,  0x2563},
{0xba,  0x2551},
{0xbb,  0x2557},
{0xbc,  0x255d},
{0xbd,  0x255c},
{0xbe,  0x255b},
{0xbf,  0x2510},
{0xc0,  0x2514},
{0xc1,  0x2534},
{0xc2,  0x252c},
{0xc3,  0x251c},
{0xc4,  0x2500},
{0xc5,  0x253c},
{0xc6,  0x255e},
{0xc7,  0x255f},
{0xc8,  0x255a},
{0xc9,  0x2554},
{0xca,  0x2569},
{0xcb,  0x2566},
{0xcc,  0x2560},
{0xcd,  0x2550},
{0xce,  0x256c},
{0xcf,  0x2567},
{0xd0,  0x2568},
{0xd1,  0x2564},
{0xd2,  0x2565},
{0xd3,  0x2559},
{0xd4,  0x2558},
{0xd5,  0x2552},
{0xd6,  0x2553},
{0xd7,  0x256b},
{0xd8,  0x256a},
{0xd9,  0x2518},
{0xda,  0x250c},
{0xdb,  0x2588},
{0xdc,  0x2584},
{0xdd,  0x258c},
{0xde,  0x2590},
{0xdf,  0x2580},
{0xfe,  0x25a0}
};

int main() {

    char symb;
    unsigned char s;

    ifstream fin;
    ofstream fout;

    fin.open("386intel.txt");
    fout.open("output2.txt");

    while (fin.get(symb)) {
        s = (unsigned char)symb;

        

            int value = CP437[int(s)];
            char result[5] = { 0,0,0,0,0 };
            
            

            if (CP437[int(s)] != 0) {
                result[2] = value & 0b111'111 | 0b1000'0000;
                value = value >> 6;
                result[1] = value & 0b111'111 | 0b1000'0000;
                value = value >> 6;
                result[0] = value & 0b1111 | 0b1110'0000;
                fout << result;
            }
            else
                fout << symb;
           
            

        }
    }

Ответы (0 шт):