Breite Zeichencodes?



  • Guten Tag Allerseits!

    Kennt sich jemand mit Unicode-Definitionen aus?(TCHAR.H)
    Ich habe eine Definition die mir schwer zu schaffen macht 😞 !
    #define __T(x) x
    Sie macht nicht das was ich will. Sie sollte doch nun aus allen 8-Bit-Bustaben-Strings 16-Bit-Buchstaben-Strings machen.

    Ich habe ein programm erstellt, das dies überprüfen kann.

    #include <stdio.h>
    #include <wchar.h>
    //Hier kann auch _UNICODE definiert werden, für weitere und andere Definitionen
    #include <tchar.h>
    
    #define __T(x) x
    
    int main()
    {
        int i;
        int w_i;
    
        static char x[] = "Hello!";
        static wchar_t w_a[] = L"Hello!"; 
    
        char * p="Hello!";
        wchar_t * w_p = L"Hello!";
    
        int unicode;
        static wchar_t unicode_zeichen;
    
        i=strlen(p);
        w_i=wcslen(w_p);
    
        printf("Char mit einem Byte(ASCII-Code):\n");
        printf("String: %s\n",x);
        printf("Anzahl Zeichen: %i\n",i);
        printf("Speicherplatz: %i\n\n", sizeof(x));
    
        printf("Wchar_t mit zwei Bytes(Unicode):\n");
        printf("String: ");
        wprintf(w_a);
        printf("\nAnzahl Zeichen: %i\n",w_i);
        printf("Speicherplatz: %i\n", sizeof(w_a));   
        getchar();
    
        //Diesen Teil müsst ihr nicht beachten.
        while(1)
        {
        system("cls");
    
        printf("Unicode: ");
        scanf("%i",&unicode);
    
        unicode_zeichen=unicode;
    
        wprintf(L"\n%c",unicode_zeichen);
    
        getchar();
        getchar();
    }
    }
    

    Bin für jede Antwort dankbar!

    MFG Ed



  • Dieser Beitrag gehört nicht zum WinApi-Thema. Ich weiss...
    Ich habe ihn ins WinApi-Forum geschrieben, weil ich mich mit dem Buch Windowsprogrammierung von Petzold beschäftige.
    Die Definitionen auf Seite 35 funktionieren in meinem Prog nicht.

    Ich bin sicher ihr WinApifreaks kennt das Buch auswendig. 😉



  • _T ergibt nicht in jedem Fall "breite" Zeichen. Es erfolgt je nach Build-Modell
    (Unicode oder nicht) eine Expansion nach char oder wchar. Wenn du in jedem Fall
    Unicode haben willst, musst du L"..." verwenden.


Anmelden zum Antworten