знаки вопроса вместо символов кириллицы в консоли visual studio windows 11
при попытке скомпилировать код на c++, в терминале вместо русских букв появляются знаки вопроса. setlocale(LC_ALL, "rus") пробовал, проблема не решилась. на ютубе увидел, что помогает панель управления >> часы и регион >> региональные стандарты >> дополнительно >> изменить язык системы и там поставить галочку на бета-тесте (юникод utf-8), а также сменить язык на русский (россия). однако результат остался прежним. как вариант думал, что проблема в шрифте, который не поддерживает русский язык. однако ввод в консоли и в среде разработки на русском языке работал нормально.
вот полный код:
#include <iostream>
#include <conio.h> // Для чтения нажатий клавиш
int main() {
setlocale(LC_ALL, "rus");
int choice = 1; // Указатель изначально установлен на первом варианте
char ch;
while (true) {
system("cls"); // Очистка экрана (для Windows)
// Выбор действия
std::cout << "Выберите действие:" << std::endl;
std::cout << (choice == 1 ? "-> " : " ") << "Действие 1" << std::endl;
std::cout << (choice == 2 ? "-> " : " ") << "Действие 2" << std::endl;
std::cout << (choice == 3 ? "-> " : " ") << "Действие 3" << std::endl;
ch = _getch(); // Чтение нажатой клавиши
if (ch == 13) { // Если нажата клавиша "enter"
// Реализация выбранного действия
switch (choice) {
case 1:
// Код для реализации действия 1
std::cout << "Вы выбрали Действие 1!" << std::endl;
break;
case 2:
// Код для реализации действия 2
std::cout << "Вы выбрали Действие 2!" << std::endl;
break;
case 3:
// Код для реализации действия 3
std::cout << "Вы выбрали Действие 3!" << std::endl;
break;
}
break; // Выход из цикла
}
else if (ch == 72 && choice > 1) {
// Если нажата клавиша "вверх" (стрелка вверх) и указатель не на первом варианте
choice--;
}
else if (ch == 80 && choice < 3) {
// Если нажата клавиша "вниз" (стрелка вниз) и указатель не на последнем варианте
choice++;
}
}
return 0;
}
