wchar_t und array



  • Hi,

    ich habe ein problem mit einem array aus wchar_t's. Ich möchte wchar_t-Zeichen in ein array reinstopfen und sie dann ausgeben lassen, doch ich bekomme keine zeichen sondern NUR integer ausgegeben???

    Hier der code:

    #include <string>
    #include <iostream>
    
       class matrix 
        {
        public:
            union 
            {
                struct
                {
                    mutable wchar_t _11, _12, _13, _14;
                    mutable wchar_t _21, _22, _23, _24;
                    mutable wchar_t _31, _32, _33, _34;
                    mutable wchar_t _41, _42, _43, _44;
                };
                mutable wchar_t values[16];
            };
    
            matrix                                  (void) {};
            matrix                                  (wchar_t _11_, wchar_t _12_, wchar_t _13_, wchar_t _14_,
                                                    wchar_t _21_, wchar_t _22_, wchar_t _23_, wchar_t _24_,
                                                    wchar_t _31_, wchar_t _32_, wchar_t _33_, wchar_t _34_,
                                                    wchar_t _41_, wchar_t _42_, wchar_t _43_, wchar_t _44_)  :
                                                    _11(_11_), _12(_12_), _13(_13_), _14(_14_),
                                                    _21(_21_), _22(_22_), _23(_23_), _24(_24_),
                                                    _31(_31_), _32(_32_), _33(_33_), _34(_34_),
                                                    _41(_41_), _42(_42_), _43(_43_), _44(_44_)
                                                    {
                                                    }
            ~matrix (void) {}
    
            void draw (void)
            {
                for (int i=0; i<16; i+=4)
                {
                    std::wcout << L"[ " << values [i]   << L", "
                                        << values [i+1] << L", "
                                        << values [i+2] << L", "
                                        << values [i+3] << L", "
                                        << L" ]" << std::endl;
                }
            }
        };
    
    int main ()
    {
    
        matrix x ('h','a','l','l','o',' ','l','i','e','b','e',' ','w','e','l','t');
        x.draw();
    
        std::wcin.get();
    }
    

    Ist bestimmt ein ganz doofer fehler, weiß einer woran das liegt?



  • *push*

    bitte ist mega wichtig...



  • ausser, dass dein code an mehreren stellen gegen den standard verstößt:

    matrix x ('h','a','l','l','o',' ','l','i','e','b','e',' ','w','e','l','t');
    

    du übergibst chars, keine wchars 😉

    ps: du musst nicht pushen, hier wird geantwortet, wenn die leute was wissen, imho kriegt man ohne pushen auch qualifiziertere antworten als diese 😉



  • naja lass den standard mal da wo er momentan ist: im datennirvana!

    Wenn ich sowas mache:

    matrix x (L"h",L"a",...

    jammert der mir die Ohren voll, er könne kein unsigned short[2] in wchar_t konvertieren



  • Von "" war keine Rede, es gibt auch wchar_t-Literale (L'X'). Hilft es vielleicht, wenn du deinem Compiler mitteilst, dass wchar_t ein eigener Typ und kein unsigned short ist? Falls du den MSVC benutzt, kannst du das in den Projektoptionen unter "C++/Sprache" einstellen.



  • funzt auch so net 😞 egal ob ich umstelle oder nicht 😞



  • Bei mir (Win XP Prof SP2, VS 2003 E) funktioniert's, sowohl mit wchar_t als builtin als auch ohne.



  • --- schrieb:

    funzt auch so net 😞 egal ob ich umstelle oder nicht 😞

    Kannst du das mal spezifizieren? Damit kann keiner was anfangen. Ein Unicode Literal schreibt sich genauso wie ein ANSI-String-Literal, nur mit vorangestelltem L.

    const char* x = "blabla";
    const wchar_t* x = L"blabla";
    
    char x = 'x';
    wchar_t x = L'x'
    

Anmelden zum Antworten