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

标签 c++ c

<分区>

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

    #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 是值与 |(按位或运算符)的组合,用于选择要更改前景色还是背景色。更改适用于写入控制台的下一个函数(例如 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;
}

关于c++ - 在 C 和 C++ 中更改控制台输出的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725769/

相关文章:

c++ - 如何强制在派生类中调用基类构造函数?

c++ - 高性能 QImage 输出显示

c - 将指向函数指针的指针存储在 void* 中

c - 为什么递归需要这么长时间?

c++ - 如何将包装的 C++ 对象传递给 Javascript 回调?

c++ - 找不到 Windows SDK 版本 7.0

c - 如何根据我传递给程序的参数设置 slurm 中每个节点的任务数?

c - 我在人脸识别系统中使用了“嵌套的if”语句。显示的代码中的“嵌套”是否正确?

c - 设计 O(n) 遍历的哈希表,其中 n 是元素数量

c# - 如何将 C# 类似字符串的变量传递给 sbyte* 参数?