Страницы

Поиск по вопросам

понедельник, 22 апреля 2019 г.

Правильный вывод степени

Как в окне правильно вывести степени, т.е. не x^2, а чтобы двойка находилась выше?


Ответ

Для начала, вам нужно настроить правильный вывод 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; }
Результат:

Комментариев нет:

Отправить комментарий