C++创建更改控制台颜色函数

C++ creating a change console colors function

本文关键字:颜色 函数 控制台 创建 C++      更新时间:2023-10-16
cout << "Picks your colors..." << endl << "0 = blackt 1 = bluet 2 = pea greent 3 = tealt 4 = red" << endl;
cout << "5 = purplet 6 = green/brownt 7 = light greyt 8 = gark grey" << endl;
cout << "9 = lisghter brighter bluet A = lime greent B = light blue/aqua-isht C = red/orange" << endl;
cout << "D = pink/roset E = yellow" << endl;
char bg;
char fg;
cout << "Pick your foreground:t";
cin >> fg;
cout << "Pick your background:t";
cin >> bg;
string colors;
colors = "0x",bg,fg;
SetConsoleTextAttribute( hstdout, colors );

这将是一个允许用户输入更改控制台颜色的功能。我知道这适用于Windows,但我不确定它在Linux机器上会做什么。不幸的是,我不知道如何组成字符串颜色,包括进入控制台属性函数的字符串中的字符。使用此方法,我收到此错误...

错误:无法将参数'2''std::string'转换为'BOOL SetConsoleTextAttribute(void*, WORD)''WORD'

有什么想法吗?有什么更好的方法可以更改颜色吗?我知道Windows系统调用,但我认为这可能适用于Linux,也可能不适用于Linux。也许我可以进行两个不同的调用,一个用于 linux,但这听起来太复杂了,我不知道如何让程序区分。

如前所述,该函数采用 WORD 值。实质上,背景色和前景色定义了红色、绿色和蓝色值的常量,可以混合在一起以创建其他颜色。此站点的代码示例段:

http://www.adrianxw.dk/SoftwareSite/Consoles/Consoles4.html

#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
  HANDLE hOut;
  hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute(hOut,
                        BACKGROUND_GREEN |
                        BACKGROUND_RED |
                        FOREGROUND_GREEN | 
                        FOREGROUND_BLUE |
                        FOREGROUND_INTENSITY);
  cout << "Intense Cyan on yellow background." << endl;
  return 0;
}

该网站还列出了一些可以使用的其他组合。