#cpp #winapi
Как в окне правильно вывести степени, т.е. не x^2, а чтобы двойка находилась выше?
Ответы
Ответ 1
Для начала, вам нужно настроить правильный вывод Unicode. Как это делать, описано в этом вопросе. Имея вывод в Unicode, легко подсмотреть номера юникодных символов, и написать функцию перекодировки. Например, такую: wchar_t digitToSuperscript(unsigned int digit) { if (digit >= 10) throw std::out_of_range("digit"); switch (digit) { case 1: return 0x00B9; case 2: return 0x00B2; case 3: return 0x00B3; default: return 0x2070 + digit; } } (Ну или если вам больше нравится, lookup в таблице из 10 элементов.) Пробуем: #include "stdafx.h" #include#include #include #include wchar_t digitToSuperscript(unsigned int digit) { if (digit >= 10) throw std::out_of_range("digit"); switch (digit) { case 1: return 0x00B9; case 2: return 0x00B2; case 3: return 0x00B3; default: return 0x2070 + digit; } } int wmain(int argc, wchar_t* argv[]) { _setmode(_fileno(stdout), _O_U16TEXT); _setmode(_fileno(stdin), _O_U16TEXT); _setmode(_fileno(stderr), _O_U16TEXT); std::wcout << L"x"; for (int d = 0; d < 10; d++) std::wcout << digitToSuperscript(d); return 0; } Результат:
Комментариев нет:
Отправить комментарий