Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Win32 Console


Автор: Elias 19.3.2003, 04:50
exclamation.gif Как правильно выводить в проектах Win32 Console VC++ символы, например руского языка, а то вывод cout << Привет выдает всякую ерунду.

Автор: Дрон 19.3.2003, 07:22
Что касается простого cout <<, то выдаёт он не ерунду,
а нормальный русский текст... Только не в той кодировке.
Дело в том, что если ты его набираешь в кодировке,
используемой Windows, т.е. ANSI, а консольное приложение
выводит на экран текст в кодировке, используемой MSDOS, т.е. OEM.
Кажется так это назывется... smile.gif

Исправить можно так: загружаешь свой исходник в редактор,
использующий OEM кодировку (хоть Norton Commander),
и переписываешь все строки на русcком там. Потом в VC ты будешь
видеть "всякую чушь", но зато при работе приложения всё будет
нормально. Других методов я не знаю.
А насчёт Unicode... Так его вроде так просто и не вывести
через консноль. Во всяком случае, я не пробовал.

Автор: Unregistered 19.3.2003, 11:35
Все просто:

char szHello[] = "Привет!!!";
char szHelloOem[ 255 ];

::CharToOem( szHello, szHelloOem );

cout << szHelloOem << endl;

если нужна обратная кодировка - OemToChar...

Автор: Paradox 19.3.2003, 14:22
А я делал вот так
Код
int i=0;
  while (str[i]!='\0') {
              if ((str[i]>=-128)&&(str[i]<=-80))
                 str[i] = str[i]+64;
              else
                if ((str[i]>=-32)&&(str[i]<=-17))
                  str[i] = str[i]+16;
    i++;
  }
 }

Автор: Nastya 20.3.2003, 20:50
Только для
::CharToOem( szHello, szHelloOem );

Надо еще windows.h подключить

Автор: TaTaP 21.3.2003, 00:41
ну да, конечно, еще не забыть отлинковать с user32.lib, а то линковщик ругаеться будет, собака серая smile.gif))))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)