Supercript

Signaler
Messages postés
3
Date d'inscription
mercredi 1 août 2007
Statut
Membre
Dernière intervention
19 février 2009
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,
après mais très nombreuses recherches je n'ai toujours pas réussi à trouver une solution.
Je souhaiterais afficher dans une console windows des chiffres à l'exposant.
Outre le 0,1,2,3, je voudrais afficher 4-9.
Sur Mac, ça marche, mais sur windows je rencontre bien des difficultés.

Voici ce que j'ai dans mon code :
#define unicode
#include<windows.h>
#include<string>
...
std::locale::global(std::locale(""));
wstring s=L"\xB2\xB3";     //me renvoit bien 2et3 à l'exposant
wstring t=L"\u2070";    //me renvoit 0 à l'exposant
wcout<<s;
wcout<<endl<<t;


Mais quand je change 2070, par 2074 (par ex) ou autre, il ne m'affiche pas le bon caractère.
Merci d'avance pour vos idées, je suis en plein désespoir ^^.
++, Syl.

P.S: pour Mac mon code est différent.

1 réponse

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Salut,

J'ai bien peur que l'invite de commande ne propose qu'un jeu de caractères restreint.

Avec le code suivant :
<hr size="2" width="100%" />#include <windows.h>

int main()
{
  int nI;
  DWORD nBuffer;

  for (nI = 33; nI < 255; nI++)
    WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), &nI, 1, &nBuffer, NULL);
  return 0;
}
<hr size="2" width="100%" />J'obtiens :

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~¦ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñ
Ѫº¿®¬½¼¡«»¦¦¦¦¦ÁÂÀ©¦¦++¢¥++--+-+ãÃ++--¦-+¤ðÐÊËÈiÍÎÏ++
¦_¦Ì¯ÓßÔÒõÕµþÞÚÛÙýݯ´­±=¾¶§÷¸°¨·¹³²¦

J'ai bien les exposants 0, 1, 2 et 3. Mais pas les autres.

C'est la page de code 850, par défaut sur les Windows européens.

Tu peux changer la page à l'aide de SetConsoleCP.

Mais il n'y a peut être pas de page contenant les autres exposants que ce soit au niveau des pages de windows et des pages OEM.

Reste la notation 2^12.