在C和C ++中更改控制台输出的背景颜色

我使用“system”命令在控制台中更改背景和文本颜色。

#include  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()例如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  #include  int main() { SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE ); printf ("Hello world\n"); return 0; } 

另一个显示颜色图表,显示前景色和背景色的所有组合:

 #include  #include  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; }