ACCENTS AIGUS ET AUTRES PONCTUATIONS

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 19 nov. 2009 à 01:13
pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 - 19 nov. 2009 à 11:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50869-accents-aigus-et-autres-ponctuations

pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 11
19 nov. 2009 à 11:28
J'utilise depuis bien longtemps le code suivant :
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int i;
char c;
printf("\nEntrez un caract%cre : ",0x8A);
i=getchar();
c=(char)i;
printf("\nPour %c le code hexad%ccimal est : \\x%x \n",c,0x82,i);
printf("\nAu revoir ! \n\n");
system("PAUSE");
return 0;
}
pour savoir la valeur hexadécimale d'un caractère.
Mais il y a un problème à l'usage quand le caractère
suivant dans le message est a,b,c,d,e ou f
Il faut passer en octal. Voir ci-joint dans :
"Conversion en fraction égyptienne" - pgl10.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
19 nov. 2009 à 09:09
Si tu avais cherché tu aurais vu qu'une source plus complète existait : http://www.cppfrance.com/codes/TRANSCODAGE-ENTRE-DIFFRERENTS-CODES-DEV-CPP_29633.aspx

De plus, il existe une fonction qui effectue la conversion : CharToOem
Voir ici : http://msdn.microsoft.com/en-us/library/ms647473%28VS.85%29.aspx

Enfin, j'appuie CptPingu pour dire qu'on ne DOIT PAS appeler une variable comme un type.

Il y avait une solution pour utiliser l'opérateur << : définir une classe qui gère cela.

Pour moi cette source n'est pas assez fournie pour avoir sa place sur ce site.
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
19 nov. 2009 à 01:13
> Les é, è , ê, etc. sont mal affichés avec cout << et sous Dev-c++.

Faux. Le problème ne vient pas de C++, ou de Dev-C++, mais de la configuration du terminal. Sous unix, avec un terminal en UTF8, je n'ai jamais de problème. Sous Windows, je ne sais pas si c'est possible de configurer le type d'encodage du terminal (ça doit l'être).

Au niveau du code maintenant:

> #include <cstdlib>
Inutile.

> #include
> #include <string>
string est inclu dans iostream, donc inutile de le remettre.

> using namespace std;
Beurk ! A éviter. Mieux vaut écrire std::cout et std::string.
A la limite: using std::cout; et using std::string; dans une portée limitée.

> void print(string string)
Appeler une variable comme un type n'est vraiment pas judicieux.

> if (string[x] =='ê'){string[x] = '\x88';}
> if (string[x] =='ü'){string[x] = '\x81';}
Plutôt que d'avoir une série de if, mieux vaut créer un tableau statique constant, qui comportera toutes les correspondances. C'est plus souple à mettre à jour, et allège la fonction.

D'un point de vue générale, c'est un peu court pour un code source. C'est juste quelques if, et à mon avis, si admin passe par là, cette source sera supprimée.
Rejoignez-nous