Afficher Console Windows

Description

Pour afficher en programmation C++ du texte dans la console Windows il y a un petit problème bien connu depuis longtemps : les caractères accentués et quelques autres ne sont pas affichés correctement. Il y a sur Internet beaucoup d'informations et plusieurs méthodes pour effectuer correctement ces affichages. Le problème est dû à l'encodage différent du texte en mémoire et sur la console Windows. Le remplacement de l'encodage ANSI par l'encodage OEM est effectué ici en C++ sans aucune utilisation extérieure. On en a donc la maîtrise complète.

Les diverses méthodes disponibles sur Internet fonctionnent bien pour les voyelles minuscules accentuées utilisées en français et pour ç ñ et æ mais pas pour œ. Par contre, avec ces méthodes, il demeure un problème résiduel : les lettres majuscules accentuées utilisées en français ne sont pas affichées correctement sauf Ç Ñ É Æ.

La fonction out() effectue un remplacement correct pour Ç ç Ñ ñ à â é è ê ë É î ï ô ù û ü æ Æ et un remplacement approximatif, mais ressemblant, pour œ Œ À Â È Ê Ë Î Ï Ô Ù Û Ü. C'est ce qui est très facile à observer en comparant le code source en C++ du programme principal et l'image obtenue de la console Windows disponible dans le zip d'accompagnement.

Pour un pays non francophone les voyelles accentuées peuvent être différentes et inutilisées en français, exemples : Á Ä Ã Å, et dans ce cas une adaptation facile du code source de la fonction out() est nécessaire.

#include <iostream>
#include <string>
#include "out.hpp"

int main()
{
    std::cout << out("C'est à qui ?") << std::endl;
    std::cout << out("Où est Thérèse ?") << std::endl;
    std::cout << out("Noëlle aperçut bientôt là-bas l'âne bâté") << std::endl;
    std::cout << out("La grenouille qui se veut faire aussi grosse que le bœuf") << std::endl;
    std::cout << out("MA SŒUR NE VOIS TU RIEN VENIR ?") << std::endl;
    std::cout << out("À mesure qu'il s'éloigne ...") << std::endl;
    std::cout << out("Âne que tu es !") << std::endl;
    std::cout << out("Étant donné qu'il ...") << std::endl;
    std::cout << out("Être ou ne pas être ...") << std::endl;
    std::cout << out("Île du Pacifique, Tahiti se distingue par ...") << std::endl;
    std::cout << out("Ôte-toi de là !") << std::endl;
    std::cout << out("Bien affichés : Ç ç Ñ ñ à â é è ê ë É î ï ô ù û ü æ Æ") << std::endl;
    std::cout << out("Les caractères approximés : œ Œ À Â È Ê Ë Î Ï Ô Ù Û Ü") << std::endl;
    return 0;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.