Rock
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Garrett Цитата: Для вывода русского языка в консоль Windows вашего варианта хватит, но без варианта Maphusailius русский текст не завести. Ещё раз повторю - речь про консоль Windows, на Linux всё попроще... | Я дал ключ к решению. Нужно подобрать locale. Давайте представим, что мы с Вами приучены мыслить аналитически, плюс понимаем, как устроены вещи. Вот Винда, в отличие от Линукса, когда-то было UCS2, а теперь UTF-16. Но в консоли у нее по историческим причинам OEM. То есть, там черт ногу сломит и программе нужно помочь. Русский влазит в UCS2 и уж точно должен сработать любой UTF-16. Давайте вместо системного locale попробуем родной американский utf-16: #include <iostream> #include <string> int main() { std::setlocale(LC_ALL, "en_US.UTF-16"); std::wstring s; std::wcin >> s; std::wcout << s << std::endl; } У меня нет под рукой Линукса, но если он до сих пор не слишком кривой, то это будет работать и там. Точнее, некривым должен быть компилятор и его runtime. Майкрософтовский, например, кривой и utf-8 в нем работает плохо, поэтому нужно сделать ему одолжение и выбирать utf-16. |