Ahoj někde jsem četl že maximální hodnota wchar_t je 65535, ale následující kód se zastaví na 255. Proč?
Dík za odpovědi
wchar_t wct=0;
for(int i =0;i<65536;i++)
{
wct=i;
wcout<<wct<<endl;
}
Ahoj někde jsem četl že maximální hodnota wchar_t je 65535, ale následující kód se zastaví na 255. Proč?
Dík za odpovědi
wchar_t wct=0;
for(int i =0;i<65536;i++)
{
wct=i;
wcout<<wct<<endl;
}
Zkus to takto>
#include <iostream>
int main()
{
wchar_t wct=0;
for(int i = 0; i<65536; i++)
{
wct=i;
std::wcout<<(long)wct<<std::endl;
}
}
Zkusil jsem t os přetypováním na long. Výstup je toto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
atd...
Potřebuješ nastavit konzoli na jiný typ kódování. SetConsoleOutputCP a SetConsoleCP by vypadaly nadějně, ale třeba v mém případě je to špatný, protože seznam dostupných CodePage se dostane zde:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
a já tam Unicode CP nemám. Tak jsem našel ještě jednu možnost, ale nevím, jestli to k něčemu bude, před výpis dej:
// file mode is UTF16 (translated)
_setmode(_fileno(stdout), _O_WTEXT);
nebo
// file mode is UTF16 no BOM (translated)
_setmode(_fileno(stdout), _O_U16TEXT);
a budeš potřebovat:
#include <io.h>
#include <fcntl.h>
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku