Hm, da, ne znam otkud mi \U kad u MSDN-u lepo piše \x:
http://msdn.microsoft.com/en-us/library/h21280bw(VS.71).aspx
Na žalost, čak i kad staviš \x mešanje ćirilice i latinice neće raditi jer wprintf zahteva da string bude u jednom lokalitetu (oni to zovu "locale", funkcija je setlocale) i da bi se slova videla to mora da bude onaj lokalitet setovan u Control Panelu za non-Unicode aplikacije. Ako bi debagovao unutar wprintf video bi da se dolazi do C funkcije wctomb i SDK funkcije WideCharToMultiByte, koja "ubija" Unicode. Meni je misterija zašto su to uradili, verovatno je u pitanju kompatibilnost sa postojećim kodom.
Ono što ti možeš da koristiš je šta savkic kaže, WriteConsole:
Code:
wchar_t temp[] = L"\x0420\x0435\x043F\x0443\x0431\x043B\x0438\x043A\x0430\x0020\x0421\x0440\x0431\x0438\x0458\x0430\n";
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), temp, (DWORD)_tcslen(temp), NULL, NULL);
Ako ti treba printf funkcionalnost, onda iskoristi swprintf da formiraš string, pa WriteConsole da ga ispišeš. Može čak i funkcija da se napravi:
Code:
BOOL wprintf_ex(const wchar_t* format, ...)
{
CString temp;
va_list params;
va_start(params, format);
temp.FormatV(format, params);
return WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), temp, temp.GetLength(), NULL, NULL);
}
Ovde je korišćen CString umesto WCHAR temp[neki_broj], jer omogućava dinamičku dužinu stringa.
[Ovu poruku je menjao Mihajlo Cvetanović dana 17.02.2009. u 12:38 GMT+1]