Вы наверное не раз пытались вывести в консольное приложение русский текст, но вместо него выводились разные кракозябры.
К примеру, если мы напишем такой код на С++
То после компиляции, вот что будет выдавать нам консольное окно программы.
Если же мы будем использовать функцию setlocale() внутри функции main()
То получим вместо иероглифов нормальный русский шрифт, вуаля:
Также, можно опустить последний аргумент функции — setlocale(LC_ALL, "Russian"); можно заменить на setlocale(0, ""); — работоспособность программы от этого не изменится.
На данный вопрос уже ответили:
Начал изучать C++ и столкнулся с проблемой вывода русских букв в консоль. У нас на форуме узнал, что чтобы C++ правильно отображались русские буквы, надо применять setlocale(LC_ALL, "Russian") и применял её, всё было нормально, пока в книге не прочитал про ввод строк и строки и запустил пример из книги. В программе, код которой идёт ниже, если оставить setlocale , то программа выводит русские буквы нормально, а вот если запросить строку и ввести русские буквы, а потом вывести их, то они портятся при последующем выводе. Если убрать setlocale , то русские буквы при вводе, а потом выводе не портятся, зато вывод их из программы портится.
Вопрос: как мне поступить, чтобы можно было и из программы русские буквы выводить и при запросе ввода и последующем выводе они не портились?
UPD: попробовал так:
Но вообще получается что-то странное похоже что в переменные записываются выводимые строки : в desert записывается "У меня есть вкусный " а в name записывается " для вас, " . И что делать я хочу русский язык а не
после моего кода и не то что стало после UPD а именно:
UPD: Нашёл самый лучший идеальный вариант здесь и всем настоятельно рекомендую использовать ТОЛЬКО ЭТОТ ВАРИАНТ он самый лучший!
При изучении языка C++ и программировании под Windows довольно часто возникают вопросы по поводу отображения русских букв в консоли. Вывод и ввод русских букв сопровождается выводом и вводом каких-то кракозябр или иероглифов. В интернете можно найти довольно много советов, но большая часть советов, которые мне попались, не помогали в решении проблемы.
Возникла проблема с отображением русских букв
Если нужно быстрое решение данной проблемы, то можно сразу пролистать вниз, ибо сначала я расскажу о том, как возникла эта проблема у меня и о том, как я искал решение.
На языке C++ программирую под ОС Linux, использую компилятор GCC. С проблемой неправильного отображения русских букв я не сталкивался. В момент написания статьи я нахожусь далеко от своего компьютера, могу довольствоваться лишь скромненьким ноутбуком с установленной ОС Windows Seven. Захотелось покодить и я установил на него интегрированную среду разработки Dev-C++ 5.10(использует компилятор TDM-GCC 4.8.1 на базе GCC 4.8.1). Кстати, она уже официально не поддерживается, но существует форк Orwell Dev-C++, который обновляется по сей день. Установив, я запустил и для пробы написал простую программку, которая отображает текст «Привет, мир!». Но поздороваться она с миром так и не смогла, а лишь сказала что-то непонятное на древнеегипетском. После перелопачивания некоторых форумов и сайтов я нашел множество советов, но основная масса не способна была решить её полностью, образовывались подводные камни о которых расскажу далее.
После написания, компиляции и запуска такой программы: