Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c] Stampa caratteri unicode

    Ciao a tutti,

    sto cercando di rendere graficamente più carino un programma che distribuisce le 52 carte da poker. Al posto dei nome delle carte (asso di cuori...) vorrei mettere numeri e simboli. Per quanto riguarda i simboli ho trovato che esistono nell'insieme dei caratteri unicode.
    Cercando su google ho trovato che è possibile stampare con printf questi caratteri con la sequenza di escape \x seguita dal codice esadecimale del carattere unicode.
    Purtroppo, se ci provo mi accetta solo codice a due cifre, che dovrebbe corrispondere all'insieme dei caratteri ASCII, giusto?
    La mia piattaforma è Linux ubuntu.

    Grazie mille!

  2. #2
    Su Linux in genere li puoi includere direttamente nei sorgenti, assicurandoti di salvarli in UTF-8.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    codice:
    #include <wchar.h>
    ...
        wchar_t ch = 0x0000;
    
        printf("%lc", ch); // per stampare un'array unicode usa %ls

  4. #4
    Il
    codice:
    #include <stdio.h>
    
    #include <wchar.h>
    
    int main()
    {
    wchar_t ch = 0x2660;
    printf("%lc\n", ch);
    return 0;
    }
    non produce nessun errore di compilazione, ma nemmeno nessun risultato nel terminale.

  5. #5
    Originariamente inviato da MItaly
    Su Linux in genere li puoi includere direttamente nei sorgenti, assicurandoti di salvarli in UTF-8.
    Gedit mi salva i file in UTF-8 di default. Come faccio ad usare questi caratteri? Con il loro codice esadecimale? Come faccio a specificare che si tratta di un carattere unicode anzichè una sequenza alfa-numerica?

  6. #6
    Anche il codice presente su http://en.wikipedia.org/wiki/Wide_character non da risultati.

    codice:
    #include <stdio.h>
    
    #include <wchar.h>
    #include <wctype.h>
    
    int main()
    {
    
    wchar_t myChar1 = L'Ω';
    wchar_t myChar2 = 0x2126;  // hexadecimal encoding of char Ω using UTF-16
    wchar_t myString1[] = L"♠♣♥♦";
    wchar_t myString2[] = { 0x2660, 0x2661, 0x2662, 0x2663, 0x0000 }; // hex encoding of null-terminated string ♠♣♥♦ using UTF-16
     
    printf("This is a long string: %ls \n",myString1);
    wprintf(L"This is a long string: %s \n",myString2);
    
    
    return 0;
    }
    Avevo anche trovato che bisognava usare la seguenza di escape /x seguita dal codice esadecimale a quattro cifre, ma nulla!

    Mi sto perdendo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.