[英]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.