Какая функция С++ изменяет цвет текста или фона (MS Visual Studio)? Например cout<<"This text";
как сделать "Этот текст" красным цветом.
Как изменить цвет текста или фона в консольном приложении Windows
Ответы (3)
Цвет — это не C++, а свойство вашего терминала. Если ваш терминал использует ANSI (например, любой терминал Linux, DOS или Windows NT, если вы добавите DEVICE=C:\DOS\ansi.sys
к config.sys
, или более позднюю версию Windows, если вы вызовете оболочку с помощью cmd.exe /kansicon
), то вы можете попробовать следующий трюк:
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_GREEN "\x1b[32m"
#define ANSI_COLOR_YELLOW "\x1b[33m"
#define ANSI_COLOR_BLUE "\x1b[34m"
#define ANSI_COLOR_MAGENTA "\x1b[35m"
#define ANSI_COLOR_CYAN "\x1b[36m"
#define ANSI_COLOR_BRIGHT "\x1b[1m"
#define ANSI_COLOR_RESET "\x1b[0m"
std::cout << ANSI_COLOR_RED "Hello World\n" ANSI_COLOR_RESET;
В Википедии есть список управляющих последовательностей ANSI.
cmd.exe /kansicon
.
- person Kerrek SB; 28.12.2014
Вы можете изменить цвета для консольного приложения с помощью Win32, и вот пример того, как это сделать:
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int main(void)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
if (hStdout == INVALID_HANDLE_VALUE)
{
cout << "Error while getting input handle" << endl;
return EXIT_FAILURE;
}
//sets the color to intense red on blue background
SetConsoleTextAttribute(hStdout, FOREGROUND_RED | BACKGROUND_BLUE | FOREGROUND_INTENSITY);
cout << "This is intense red text on blue background" << endl;
//reverting back to the normal color
SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return EXIT_SUCCESS;
}
Посмотрите документацию MSDN для функции SetConsoleTextAttribute
и Буферы экрана консоли для получения дополнительной информации.
Более полный пример консольных приложений, использующих Win32, доступен здесь.
Я полагаю, что вы ищете функцию SetConsoleTextAttribute
. Первый параметр, hConsoleOutput
, будет стандартным дескриптором вывода, полученным через GetStdHandle(STD_OUTPUT_HANDLE)
. Второй параметр представляет собой комбинацию побитового ИЛИ (|
) желаемого атрибуты персонажа.
См. также: KB319883 Как изменить цвета переднего плана и цвета фона текста в окне консоли с помощью Visual C#