Вопрос о вводе/выводе кириллицы в консольном приложении: -------------------------------------------------------- #include<iostream> using namespace std; int main() { char s[1000]; cout << "строка="; cin >> s; cout << "строка=" << s << endl; return 0; } В консоли при выводе выдаются каракули (?), а при вводе всё нормально (?) 1) почему так получается? 2) как сделать так, чтобы работало правильно? -------------------------------------------------------- Ответ -------------------------------------------------------- 1) Почему так получается а) Консоль использует кодировку DOS ("кодовая страница" 866), а консольное приложение использует кодировку Windows ("кодовая страница" 1251) - из-за этого несовпадения кодировок и выдаются каракули. б) Консольное приложение вводит из консоли текст в кодировке DOS и выводит текст в консоль в кодировке DOS - поэтому текст отображается нормально. 2) Как сделать так, чтобы работало правильно Варианты решения проблемы: а) если перед запуском консольного приложения было предварительно открыто окно консоли (например запуском команды cmd, или запуском FAR), то достаточно выполнить из командной строки команду: chcp 1251 затем запускать консольные приложения (exe-файлы); б) добавить в текст программы оператор system("chcp 1251 > NUL"); перед консольным вводом/выводом. -------------------------------------------------------- 2011-11-12 А.Л. Хижа