繁体   English   中英

在c ++中设置单个文本颜色

[英]Setting individual text colors in c++

我是C ++编程的初学者,我想知道如何为单个文本设置文本颜色。 我知道如何使用system("COLOR ..")设置文本颜色,但它将颜色应用于所有文本,而不是单个文本。 我编写了一个程序,当文本为“是”时,“是”将为绿色,当为“否”时,“否”将为红色。 这是用于控制台应用程序。

cout<<"Available: ";
if(available == true){
//code for setting text colors to GREEN
}
else{
//code for setting text colors to RED
}
cout<<yesno;
//code for setting text colors back to WHITE

所以输出就像是例如

可用:(textcolor =“green”)是(/ textcolor)

感谢您的任何帮助!

您需要使用ANSI颜色代码打印文本; 但并非所有终端都支持此功能 - 如果不支持颜色序列,则会显示垃圾。

这是和例子:

cout << "\033[1;31mbold red text\033[0m\n";

这里,\\ 033是ESC字符,ASCII 27.后跟[,然后是一个或两个数字用;分隔,最后是字母m。 有关详细信息,请参阅Wikipedia上的表。

除了现有的答案之外,如果您需要一种便携式方法,并隐藏API后面的设置颜色。 有一个标题库rlutil ,它可以为您完成,包含ANSI和Windows颜色以及其他控制台操作:

rlutil::setColor(rlutil::GREY)

在Linux下,您可以执行以下操作:

#include <iostream>
using namespace std;
int main() {
    cout << "\033[1;30mblack" << endl
         << "\033[1;31mred" << endl
         << "\033[1;32mgreen" << endl
         << "\033[1;33myellow" << endl
         << "\033[1;34mblue" << endl
         << "\033[1;35mmagenta" << endl
         << "\033[0mback to normal" << endl;
    return 0;
}

检查此Wiki以获取颜色表。

在Windows下,您可以使用SetConsoleTextAttribute ,如下所示:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);

检查此页面是否包含所有字符属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM