


Как сделать русский язык в консоли при отображении введенной кириллицы (с++)
Отображаемый текст в консольном приложении на русском языке.
В программе присутствует ввод со стороны пользователя, всё на русском.
Так вот присутствует безысходное состояние когда при использовании cout <<
русский текст отображается отлично если я в кавычках где строка использую русский текст.
Но, там где я использую cin >> и все данные записываю в текстовую переменную после её дальнейшего вывода на экран получается кракозябра,
К примеру:
std::string name;
cout << "Введите ваше имя: " ;
cin >> name;
cout << "Ваше имя: "<< name;
Что я в результате получаю на экране:
Введите ваше имя: Архис
Ваше имя: @قسKسRسbra
Загвоздка в том, что когда я использую одну функцию в программе не считая мэйна все работает хорошо, но когда подключаю другие функции в которых также присутствуют отображение русского текста то в них получается кракозябра, ниже на скринах я пытался решить эту проблему, и скрины соответствуют полученным отрицательным и "положительным" результатам:
1) код:
#include
#include
#include
#include
#define gotoxy(x, y) SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), (COORD){x, y})
void enter_data(void);
int main()
{
enter_data();
return 0;
}
void enter_data()
{
using namespace std;
string name;
cout << Rus("Введите ваше имя: ");
cin >> name;
cout << name;
}
результат позитивный.
Но если усложнить программу добавив к примеру хотябы одну функцию где также присутствует русский текст то получаем кракозябру в той функции, можно это увидеть на втором скрине.
Пробуя решить проблему как порядочный начинающий программист добавил в инклуды locale
и в майне прописал setlocale(LC_ALL, "Russian"); результат на 3 скрине
также, пробовал решить проблемму другим способом
удалив setlocale(LC_ALL, "Russian"); но добавив
SetConsoleCP (1251);
SetConsoleOutputCP(1251);
в результате кракозябра в вводе, и дальнейшем выводе, это можно увидеть на 4-м скрине.
Дальше я пытался поменять значения с 1251 на 866 - результат как на скрине номер два.
Потом я отчаялся полностью и решил совместить SetConsoleCP (1251);
SetConsoleOutputCP(1251); и setlocale(LC_ALL, "Russian"); и даже при этом менял значения с 1251 на 866 результаты отрицательные, или шапка программы отображается не корректно или выводимые символы как на скрине номер 3.
Если у вас есть дельный совет, буду рад услышать, хочу довести эту программу до полной работоспособности.
Заранее спасибо за дельные советы
Модераторы, в подобном вопросе который задавал несколько минут назад перепутал категорию, его пожалуйста удалите
используй SetConsoleCP и SetConsoleOutputCP
без setlocale
установи шрифт консоли Lucida Console или Consolas в настройках консоли