C++ C++;使用Ansi颜色代码显示字符

C++ C++;使用Ansi颜色代码显示字符,c++,linux,unix,graphics,command,C++,Linux,Unix,Graphics,Command,我可以对以下字符串使用ANSI颜色代码: cout << "\033[35m" << "hello" << "\033[0m" << endl; 以特定的颜色。我试过: myArr[6][5] = "\033[35mH\033[0m" 而且 myArr[6][5] = '\033[35mH\033[0m' 第一个给出了一个错误,因为我的数组是字符数据类型,所以我不

我可以对以下字符串使用ANSI颜色代码:

cout << "\033[35m" << "hello" << "\033[0m" << endl;
以特定的颜色。我试过:

myArr[6][5] = "\033[35mH\033[0m"
而且

myArr[6][5] = '\033[35mH\033[0m'

第一个给出了一个错误,因为我的数组是字符数据类型,所以我不能将它分配给字符串元素。第二个不起作用,因为“”表示单个字符,而ANSI代码有多个字符。有什么建议吗?这需要顺便转移到Linux上(在mac上的终端上)。

为什么不使用对象或结构而不是简单的字符

enum class SGRColor :int{BLACK=0,RED=1,GREEN=2,YELLOW=3,BLUE=4,PINK=5,CYAN=6,GREY=7};
class ColorChar 
{
public:
...
string getANSIColor(void)
{
...
}
private:
char _value;
SGRColor _color;
}



array<array<ColorChar ,5> , 6> myArr;
枚举类SGRColor:int{黑色=0,红色=1,绿色=2,黄色=3,蓝色=4,粉色=5,青色=6,灰色=7};
类ColorChar
{
公众:
...
字符串getANSIColor(无效)
{
...
}
私人:
字符值;
SGRColor\u颜色;
}
阵列myArr;

或过载什么是myArr的类型?你能做出一个“两个都不做”的结论吗?会发生什么?编译器错误?链接器错误?运行时错误?计算机着火了?
“\033[35mH\033[0m'
是一个无效的多字节字符,不是任何类型的字符串。计算机着火了。只是开玩笑,第一个不起作用,因为“”代表字符,周围显然不止一个字符“”。第二个错误:从不兼容的类型“const char[11]分配给“char”'这是我的字符数据类型字母数组。显然,您不能在
char
中存储五个转义码和一个字母,因此您需要不同的数据类型。很可能,
myArr[6]
已经是您需要的数据类型,所以只需将转义码插入其中即可。
enum class SGRColor :int{BLACK=0,RED=1,GREEN=2,YELLOW=3,BLUE=4,PINK=5,CYAN=6,GREY=7};
class ColorChar 
{
public:
...
string getANSIColor(void)
{
...
}
private:
char _value;
SGRColor _color;
}



array<array<ColorChar ,5> , 6> myArr;