📜  将输出颜色更改为终端 c++ (1)

📅  最后修改于: 2023-12-03 14:53:55.315000             🧑  作者: Mango

将输出颜色更改为终端

在终端中,我们可以使用 ANSI 转义序列来改变输出文字的颜色,这在 C++ 中也是可行的。下面我们将介绍如何在 C++ 中将输出文字的颜色更改为终端中的其他颜色。

输出 ANSI 转义序列

要更改输出文字的颜色,我们需要使用 ANSI 转义序列,其语法为:

\033[<CODE>m

其中 <CODE> 是一组数字,代表需要更改的颜色或者其他的属性。下面是一些常用的颜色代码:

| 颜色 | 代码 | | --- | --- | | 黑色 | 0 | | 红色 | 1 | | 绿色 | 2 | | 黄色 | 3 | | 蓝色 | 4 | | 紫色 | 5 | | 青色 | 6 | | 白色 | 7 |

如果我们想将输出文字的颜色更改为红色,那么我们可以这样做:

std::cout << "\033[31m" << "Hello World!" << "\033[0m" << std::endl;

其中 "\033[31m" 表示将颜色更改为红色,"\033[0m" 表示重置颜色为默认值。

封装 ANSI 转义序列

上面的方法虽然可行,但是每次都手写 ANSI 转义序列可能会让代码看起来很难看。我们可以创建一个简单的函数来封装 ANSI 转义序列。

enum class ColorCode {
    Black = 0,
    Red = 1,
    Green = 2,
    Yellow = 3,
    Blue = 4,
    Purple = 5,
    Cyan = 6,
    White = 7,
};

void setColorCode(ColorCode code) {
    std::cout << "\033[" << static_cast<int>(code) << "m";
}

void resetColor() {
    std::cout << "\033[0m";
}

现在,我们可以在程序中通过调用 setColorCode 函数来更改文字的颜色,通过调用 resetColor 函数来重置颜色为默认值。

setColorCode(ColorCode::Red);
std::cout << "Hello World!" << std::endl;
resetColor();
示例程序

下面是一个完整的示例程序,将输出 Hello World!,颜色为红色。

#include <iostream>

enum class ColorCode {
    Black = 0,
    Red = 1,
    Green = 2,
    Yellow = 3,
    Blue = 4,
    Purple = 5,
    Cyan = 6,
    White = 7,
};

void setColorCode(ColorCode code) {
    std::cout << "\033[" << static_cast<int>(code) << "m";
}

void resetColor() {
    std::cout << "\033[0m";
}

int main() {
    setColorCode(ColorCode::Red);
    std::cout << "Hello World!" << std::endl;
    resetColor();
    return 0;
}

输出:

<font color='red'>Hello World!</font>