Я меняю цвет фона и текста на консоли с помощью команды "system".
#include <iostream>
using namespace std;
int main()
{
system ("color 1a");
cout <<"Hello World";
cin.ignore();
return 0;
}
Есть ли способ изменить цвет только в одной строке? C или C++ в порядке. Благодарю.
Я предполагаю, что вы используете Windows, поскольку ваша функция system()
выполняет color
который является консольной утилитой для Windows.
Если вы собираетесь написать свою программу для Windows и хотите изменить цвет текста и/или фона, используйте это:
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), attr);
Где attr
- комбинация значений с |
(побитовый оператор OR), чтобы выбрать, хотите ли вы изменить цвет переднего плана или фона. Изменения применяются к следующей функции, которая записывает на консоль (например, printf()
).
Подробнее о том, как закодировать аргумент attr
, можно attr
здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682088%28v=vs.85%29.aspx#_win32_character_attributes
Например, эти программы печатают "Hello world", используя желтый текст (красный + зеленый + интенсивность) на синем фоне, на компьютере с Windows 2000 или новее:
#include <stdio.h>
#include <windows.h>
int main()
{
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED |
FOREGROUND_GREEN |
FOREGROUND_INTENSITY |
BACKGROUND_BLUE
);
printf ("Hello world\n");
return 0;
}
На этом рисунке показана цветная диаграмма, показывающая все комбинации цветов переднего плана и фона:
#include <stdio.h>
#include <windows.h>
int main()
{
unsigned char b,f;
for (b=0;b<16;b++)
{
for (f=0;f<16;f++)
{
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), b<<4 | f);
printf ("%.2X", b<<4 | f);
}
printf ("\n");
}
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
printf ("\n");
return 0;
}