0
using namespace std;

int main() {


    // Коды цветов
    const char* colors[] = {
      "\u001B[31m", // Красный
      "\u001B[32m", // Зеленый
      "\u001B[33m", // Желтый
      "\u001B[34m", // Синий
      "\u001B[35m", // Маджента
      "\u001B[36m", // Голубой
    };

    // Печать радужного текста
    for (int i = 0; i < 6; i++) { // уменьшаем до 6
        cout << colors[i] << "Привет радуга" << endl;
    }

    // Сброс цвета
    cout << "\u001B[0m" << endl;

    return 0;
}

Выводится какие-то кракозябры:

╧ЁштхЄ Ёрфєур

╧ЁштхЄ Ёрфєур

╧ЁштхЄ Ёрфєур

╧ЁштхЄ Ёрфєур

╧ЁштхЄ Ёрфєур

╧ЁштхЄ Ёрфєур

А если добавить setlocale

using namespace std;

int main() { setlocale(LC_ALL, "ru_RU.UTF-8");

// Коды цветов
const char* colors[] = {
  "\u001B[31m", // Красный
  "\u001B[32m", // Зеленый
  "\u001B[33m", // Желтый
  "\u001B[34m", // Синий
  "\u001B[35m", // Маджента
  "\u001B[36m", // Голубой
};

// Печать радужного текста for (int i = 0; i < 6; i++) { // уменьшаем до 6 cout << colors[i] << "Привет радуга" << endl; }

// Сброс цвета cout << "\u001B[0m" << endl;

return 0;

}

Выводится просто пустота введите сюда описание изображения

то-есть текст как-бы выводится, но его почему-то не видно.

Почему так? И как это исправить ?

Arslan I.
  • 384
  • 2
  • 11
  • В первом варианте цветные крякозябры или нет? – HolyBlackCat Mar 25 '24 at 07:08
  • @HolyBlackCat Да – Arslan I. Mar 25 '24 at 08:41
  • Судя по первому выводу ╧ЁштхЄ Ёрфєур у Вас файл в однобайтовой кодировке cp1251 (ANSI). Эти константы в UTF-8 не выведутся. Попробуйте сохранить код в utf-8, может быть получится. А по поводу вывода русского вот тут полный разбор https://ru.stackoverflow.com/questions/459154/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-%D1%8F%D0%B7%D1%8B%D0%BA-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8. – Alex Titov Mar 25 '24 at 16:24

0 Answers0