在 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
所以输出会像例如
可用:(文本颜色="绿色"(是(/文本颜色(
感谢您的任何帮助!
除了现有的答案之外,如果您需要一种可移植的方式来执行此操作并将设置颜色隐藏在 API 后面。有一个标题库 rlutil,它为你做这件事,包装 ANSI 和 Windows 颜色以及其他控制台操作:
rlutil::setColor(rlutil::GREY)
您需要使用 ANSI 颜色代码打印文本;但并非所有终端都支持此功能 - 如果不支持颜色序列,则会显示垃圾。
这是和示例:
cout << " 33[1;31mbold red text 33[0mn";
此处,\033 是 ESC 字符 ASCII 27。后跟 [,然后是用 ; 分隔的一两个数字,最后是字母 m。有关详细信息,请参阅维基百科上的此表。
在 Linux 下,你可以做这样的事情:
#include <iostream>
using namespace std;
int main() {
cout << " 33[1;30mblack" << endl
<< " 33[1;31mred" << endl
<< " 33[1;32mgreen" << endl
<< " 33[1;33myellow" << endl
<< " 33[1;34mblue" << endl
<< " 33[1;35mmagenta" << endl
<< " 33[0mback to normal" << endl;
return 0;
}
查看此维基的颜色表。
在Windows下,您可以使用SetConsoleTextAttribute
,如下所示:
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
查看此页面以了解所有字符属性。
相关文章:
- 通过样式表仅在QTabWidget中应用文本颜色一个特定选项卡
- 控制台中文本颜色异常
- 文本颜色 QPlainTextEdit QT
- 更改悬停在Gtkbutton的文本颜色
- 如何将控制台输出的文本颜色更改为红色,但如果从Powershell或CMD运行,背景将保持相同的颜色
- 设置子窗口的文本颜色
- 更改数组中元素的文本颜色
- 尝试选择文本颜色
- MFC Rich编辑控件2.0文本颜色
- 无法更改 Visual Studio 2010 中输出的文本颜色和文本背景
- 使用 conio.h 更改文本颜色时出错
- Mouseover SDL2时更改文本颜色
- 为qlineedit设置了背景图像时,如何在qlineedit中设置文本颜色
- 如何从qplaintExtedIt获取文本颜色
- 自定义图形列表视图项目不更改文本颜色
- 直接在.png加载的cimage上绘制时,将文本颜色设置为
- 静态文本颜色
- QMenu:为特定 QAction 设置文本颜色
- 如何更改代码块中的文本颜色和控制台颜色
- Win32:设置富编辑的默认字体和文本颜色