Вывод символов в текстовый файл
Код выполняет конвертацию из 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;
}
}