Question

J'écris un morceau de code qui traite des variables mathématiques et indices, et je besoin d'imprimer et d'indices sur une manière exposants CLI, est-il un (peut-être multi-plateforme) pour le faire? Je travaille dans la vanille C ++.

Remarque: Je voudrais que ce soit multi-plateforme, mais depuis des premières réponses, cela ne semble pas être possible, je travaille sous Linux MacOS et Ubuntu (pour bash) .

Merci

Était-ce utile?

La solution

Comme la plupart CLIs sont des terminaux vraiment que (ceux assez stupide la plupart du temps, mais parfois avec la couleur), la seule façon multi-plateforme que j'ai jamais fait cela est en allouant des lignes physiques Muliple par ligne virtuelle, tels que:

        2
f(x) = x  + log x
               2

Il est pas idéal, mais il est probablement le meilleur que vous allez obtenir sans interface graphique.

Après des informations supplémentaires sur ce que les plates-formes vous êtes principalement intéressé par:

Ubuntu au moins, des pistes de gnome-terminal en mode UTF-8 par défaut de sorte que le code ci-dessous montre comment générer les indices et les exposants:

#include <stdio.h>

static char *super[] = {"\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2",
    "\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6",
    "\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9"};
static char *sub[] = {"\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82",
    "\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86",
    "\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89"};

int main(void) {
    int i;
    printf ("f(x) = x%s + log%sx\n",super[2],sub[2]);
    for (i = 0; i < 10; i++) {
        printf ("x%s x%s ", super[i], sub[i]);
    }
    printf ("y%s%s%s z%s%s\n", super[9], super[9], super[9], sub[7], sub[5]);
    return 0;
}

Les tableaux de super et sub char * sont les UTF-8 encodages pour les points de code Unicode pour les indices supérieurs et numériques (voir ici ). Le programme donné sortira ma formule d'en haut (sur une ligne au lieu de trois), puis une autre ligne de test pour tous les choix et y-super-999 et z-sous-75 afin que vous puissiez voir à quoi ils ressemblent.

MacOS ne semble pas utiliser gnome-terminal comme un programme de terminal, mais des références ici et semblent indiquer le terminal standard comprend UTF-8 (ou vous pourriez télécharger et installer gnome-terminal en dernier recours).

Autres conseils

  

Je dois imprimer les indices et sur une CLI exposants, est-il un moyen multi-plateforme pour le faire?

Seulement si vous avez un terminal capable Unicode, ce qui est loin d'être garanti. Unicode définit un nombre limité de « caractères de compatibilité » et sous-superscript, vous ne pouvez certainement pas l'utiliser sur une ancienne lettre:

₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓ
⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿⁱ

Même alors, vous êtes tributaire de l'existence d'un glyphe dans la police de la console, qui est aussi loin d'être garanti. 2 et 3 Superscript sont susceptibles d'exister en tant qu'ils sont présents dans la norme ISO-8859-1; les autres peuvent bien ne pas fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top