Question

Exemple:

#include <iostream>

using namespace std;

int main()
{
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"Привет"; //Russian language
    cout << ru
         << endl
         << en;
    return 0;
}

Ce code imprime uniquement les valeurs HEX comme adresse. Comment imprimer la chaîne wchar_t?

Était-ce utile?

La solution

Edit: Cela ne fonctionne pas si vous essayez d'écrire un texte qui ne peut pas être représenté dans votre langue par défaut. : - (

Utiliser std::wcout au lieu de std::cout.

wcout << ru << endl << en;

Autres conseils

Puis-je proposer std::wcout?

Alors, quelque chose comme ceci:

std::cout << "ASCII and ANSI" << std::endl;
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl;

Vous pouvez trouver plus d'informations dans une question connexe .

Vous pouvez utiliser utiliser un tableau normal char qui est en réalité rempli de caractères UTF-8. Cela devrait permettre à des caractères de mélange entre les langues.

#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
cout << "\tДОБРО ПОЖАЛОВАТЬ В КИНО!\n";
}

Windows a des informations très déroutant. Vous devriez apprendre le concept de C / C de Unix / Linux avant la programmation sous Windows.

wchar_t magasins caractère UTF-16 qui est une taille de mémoire 16 bits fixe appelé caractère large mais wprintf () ou wcout () ne sera jamais imprimer des caractères larges non-anglais correctement car aucune console sortira en UTF-16. Windows affichera dans locale en cours tandis que la production de volonté unix / linux en UTF-8, tous sont multi-octets. Donc, vous devez convertir les caractères larges à plusieurs octets avant l'impression. Les wcstombs de commande unix () ne fonctionne pas sous Windows, utilisez WideCharToMultiByte () à la place.

D'abord, vous devez convertir le fichier en UTF-8 en utilisant le bloc-notes ou un autre éditeur. Ensuite, installez la police dans la console invite de commande afin de pouvoir lire / écrire dans votre langue et modifier la page de code dans la console en UTF-8 pour afficher correctement en tapant dans l'invite de commande « chcp 65001 », tandis que Cygwin est par défaut déjà en UTF-8. Voici ce que je l'ai fait en thaï.

#include <windows.h>
#include <stdio.h>

int main()
{
    wchar_t* in=L"ทดสอบ"; // thai language
    char* out=(char *)malloc(15);
    WideCharToMultiByte(874, 0, in, 15, out, 15, NULL, NULL);
    printf(out); // result is correctly in Thai although not neat
}

Notez que 874 = (Thai) page de code dans le système d'exploitation, 15 = taille de chaîne

Ma suggestion est d'éviter l'impression de caractères larges non anglais à la console à moins que nécessaire parce qu'il est pas facile.

Vous pouvez imprimer des caractères larges avec wprintf .

#include <iostream>

int main()
{
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"Привет"; //Russian language
    wprintf(en);
    wprintf(ru);
    return 0;
}

Sortie:

  

Bonjour
  Привет

nous ne cherchons pas des moyens faciles!

int i = 0;
while (ru[i]) {
   std::cout << (char)ru[i];
   i++;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top