> char a;
> for(i=0;i<8;i++){
> in >> a;
> out << a << " " << int(a) << "\n";
> }
Įvedinėti irgi reikia int, o dar geriau -- wchar_t.
Labai system-dependent. Atsimenu, dar ne taip seniai linuxe reikėdavo
kbd_mode -u.
O gal pakaks wcin, wcout?
http://stackoverflow.com/questions/1799063/how-can-i-display-unicode-characters-in-a-linux-terminal-using-c
Kai paskutinį kartą Win32 konsolėje man reikėjo unikodinio dialogo,
gavosi šitaip. Čia mišrainė iš WideString (C++ Builder'io VCL), CRTL
unikodinių funkcijų (wcslen, wscanf, _putws) ir sisteminės WriteFile.
Galbūt pasistengus pakaktų vien rantaimo.
prompt += "? [" + WideString(dfl_char) + "] > ";
do
{
putsW(prompt);
if (IsRedirected())
{
response_char = L'\n';
break;
}
fflush(stdin);
response_char = towupper(getwchar());
} while (response_char != L'\n');
..
:
int putsW(WideString text)
{
DWORD dwCount = text.Length();
if (IsRedirected()) /* sending UCS2 to the file */
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), text.c_bstr(),
dwCount * sizeof(wchar_t), &dwCount, NULL);
else /* Unicode ok with a corresponding console font */
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), text.c_bstr(), dwCount,
&dwCount, NULL);
return dwCount;
}
static char __redirected = 2;
bool IsRedirected(void)
{
DWORD dwTmp;
if (__redirected == 2)
__redirected = !isatty(1);
return __redirected != 0;
}
--
saimhe