有没有办法用C++把多项式指数打印成上标



我只是想知道是否有任何方法可以像在纸上写多项式一样打印多项式。

在电脑上,我们通常写:2x^2

但我希望它看起来像:2x2

对于具有固定间距字体的控制台,请尝试老式方法:

std::cout << "  2n";
std::cout << "2xn";

上标印在第一行,然后术语印在第二行。

这样做是可能的,但如何做可能取决于您所在的系统。

我最近参与了一个C++项目,为了可读性,我想按照您在这里提出的内容显示下标和上标。挑战在于,在大多数系统上,char类型不允许存储与这些上标相对应的值。这些上标有Unicode字符,许多C++编译器都允许您编译包含这些字符的代码,只要您将它们存储为字符串即可。例如,我制作了这个std::unordered_map来从数字映射到上标:

/* Map from numerals to their superscript equivalents. */
const std::unordered_map<char, std::string> kSuperscripts = {
{ '0', "⁰" },
{ '1', "¹" },
{ '2', "²" },
{ '3', "³" },
{ '4', "⁴" },
{ '5', "⁵" },
{ '6', "⁶" },
{ '7', "⁷" },
{ '8', "⁸" },
{ '9', "⁹" },
};

我的编译器以UTF-8格式解释这些内容,所以当我想显示它们时,我可以编写之类的东西

std::cout << kSuperscripts.at('0') << std::endl;

并将CCD_ 3打印到控制台。

有些系统除了使用UTF-8或类似的Unicode编码之外,还使用其他编码。并不是所有的C++编译器都能在源代码中接受这些字符,有些编译器可能会使用本机系统使用的代码页之外的代码页进行编译。但也许值得尝试一下这样的东西,看看它是否能在你的机器上工作。

最新更新