我使用“system”命令在控制台中更改背景和文本颜色。
#include <iostream>
using namespace std;
int main()
{
system ("color 1a");
cout <<"Hello World";
cin.ignore();
return 0;
}
有没有办法只在一行中改变颜色? C或C ++很好。 感谢。
答案 0 :(得分:4)
我假设您正在使用Windows,因为system()
函数正在执行color
,这是Windows的控制台实用程序。
如果您要为Windows编写程序,并且想要更改文本和/或背景的颜色,请使用:
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), attr);
其中attr
是值与|
(按位OR运算符)的组合,以选择您想要更改前景或背景颜色。更改适用于写入控制台的下一个函数(例如printf()
)。
有关如何编码attr
参数的详细信息,请点击此处:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682088%28v=vs.85%29.aspx#_win32_character_attributes
例如,此程序使用黄色文本(红色+绿色+强度)在蓝色背景下,在Windows 2000或更高版本的计算机上打印“Hello world”:
#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;
}