Tema: Re: lietuviškos raidės į int
Autorius: saimhe
Data: 2012-01-06 14:46:27
> 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