Как в окне правильно вывести степени, т.е. не 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
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;
}
Результат:
Комментариев нет:
Отправить комментарий