Afficher Accents sur une console windows

Si vous écrivez un programme de la sorte

#include<stdio.h>

int main(void) {
    puts("Un texte accentué");
}

et le compilrez avec MSVC et l’exécutez sur un terminal windows, il est possible que le caractère accentué s’affiche différemment. Par defaut le terminal de windows utilise une encodage OEM 850 🌍⤴ et non l’unicode. Il faut compiler le programme en utf-8 https://learn.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-170 🌍⤴

Si vous utilisez Cmake , ajoutez cette ligne dans votre CmakeLists

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")

Et signaler à la console d’interpréter le texte comme utf8 an ajoutant SetConsoleOutputCP(CP_UTF8); en début de la fonction main().

Si vous voulez rendre le programme plus portable, vous pouvez demander à ce que sur windows une autre fonction soit utilisée pour amorcer le programme, et cette fonction appellera la fonction main() ensuite.

Cette technique est illégale en C++ car appeller la fonction main() n’est pas autorisé dans ce langage.