Вопрос о вводе/выводе кириллицы в консольном приложении:
--------------------------------------------------------

   #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         А.Л. Хижа