Maison >développement back-end >C++ >Comment puis-je imprimer avec succès des caractères Unicode en C ?

Comment puis-je imprimer avec succès des caractères Unicode en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 20:28:12722parcourir

How Can I Successfully Print Unicode Characters in C  ?

Impression de caractères Unicode en C

Tentative d'imprimer un caractère Unicode, tel que la lettre cyrillique russe "ф" (U 0444), peut être difficile en C . Cet article explique comment imprimer avec succès des caractères Unicode à l'aide des méthodes C.

Utilisation des noms de caractères universels (UCN)

La méthode la plus simple consiste à utiliser les noms de caractères universels (UCN ). Par exemple, le caractère « ф » a une valeur Unicode de U 0444. En C , vous pouvez le représenter par « u0444 » ou « U00000444 ».

int main() {
    wchar_t f = '\u0444';
    cout << f << endl;
}

Utilisation des encodages

Si l'encodage de votre code source prend en charge le caractère souhaité, vous pouvez l'utiliser directement dans votre code. Par exemple, dans l'encodage UTF-8, le caractère « ф » est « u0444 ».

char b = '\u0444';

Impression sur des émulateurs de terminal

Impression de caractères Unicode sur un terminal L'émulateur dépend du codage de l'émulateur et de sa compatibilité avec le codage d'exécution du compilateur. S'ils correspondent, l'utilisation de std::cout est suffisante.

int main() {
    std::cout << "Hello, ф or \u0444!\n";
}

Gestion des spécificités de Windows

Travailler avec Windows nécessite des considérations supplémentaires. Une approche consiste à définir le descripteur du fichier de sortie sur UTF-16 à l'aide de _setmode().

#include <iostream>
#include <io.h>
#include <fcntl.h>

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"Hello, \u0444!\n";
}

Alternativement, pour des raisons de portabilité, vous pouvez utiliser des chaînes larges (wchar_t) et écrire dans le flux large (std : wcout) directement.

int main() {
    wchar_t f = L'\u0444'; // Prepend L to denote wide char literal
    wcout << f << endl;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn