С++ Изменение цвета текста

Я пытаюсь изменить цвет текста в С++, единственный ответ, который я могу найти, - для C, а не для C++. Я пробовал использовать conio.h, но не понимаю, как его использовать. Может ли кто-нибудь помочь с этим?


person Aiden Rossi    schedule 31.08.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как изменить цвет текста и фона?   -  person mgonnav    schedule 31.08.2020
comment
C++ не имеет представления о цвете текста, поэтому переносимым способом это невозможно. Решения для конкретных платформ см., например, в разделе Раскрашивание текста в консоли с помощью C++. .   -  person dxiv    schedule 31.08.2020
comment
Вы не можете с conio.h, это зависит от платформы. Но в каком-нибудь компиляторе вроде Borland вы можете найти textColor(), но вы не можете признать, что он всегда здесь   -  person thibsc    schedule 31.08.2020
comment
В стандарте C++ не определено conio.h. Не используйте непереносимые нестандартные заголовки (особенно из эпохи DOS :)   -  person David C. Rankin    schedule 31.08.2020
comment
Отвечает ли это на ваш вопрос? Раскрашивание текста в консоли с помощью C++   -  person David C. Rankin    schedule 31.08.2020


Ответы (3)


Раскрашивание текста на самом деле не на стороне С++. В некоторых терминалах Unix вы можете просто использовать такие коды, как \e[0;31m message \e[0m, непосредственно в своей программе (хотя вы можете захотеть создать API для простоты использования). Однако это не сработает в консоли Windows. Это зависит от ОС и используемого терминала.

person mgonnav    schedule 31.08.2020

Если вам не нужно придерживаться не кроссплатформенной библиотеки conio.h. Я рекомендую использовать кросс-платформенное решение: только заголовок, библиотеку moderc C++ rang. Я использую его в большинстве своих проектов, он действительно прост в использовании.

person Krzysztof Mochocki    schedule 31.08.2020

Я узнал, как изменить цвет текста с помощью windows.h. Вот пример кода, который я использовал (скопирован с https://cboard.cprogramming.com/) .

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);                                  // h is your link to the console
    SetConsoleTextAttribute(h, 1);    cout << "Sentence in blue" << '\n';        // 1 happens to be blue
    SetConsoleTextAttribute(h, 2);    cout << "Sentence in green" << '\n';       // 2 is green
    SetConsoleTextAttribute(h, 4);    cout << "Sentence in red" << '\n';         // 4 is red
    SetConsoleTextAttribute(h, 7);    cout << "Sentence in white" << '\n';       // etc.
}
person Aiden Rossi    schedule 31.08.2020