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'