C++ 为字符串中的特殊单词着色

C++ 为字符串中的特殊单词着色,c++,linux,colors,C++,Linux,Colors,我有一个节点链接列表,如下所述: class ColorGr { string word; string color; ColorGr *next; } 我有一个字符串,我想搜索其中的“单词”,并用“颜色”将它们着色 我尝试过使用ncurses,但问题在于使用windows。我不想刷新屏幕 我想在输出中打印字符串,就像cout函数一样。我的代码是C++语言,我在Linux上使用GCC。 最好的方法是什么?就windows问题而言,我不知道您是否看过PDACURES,因此

我有一个节点链接列表,如下所述:

class ColorGr
{
    string word;
    string color;
    ColorGr *next;
}
我有一个字符串,我想搜索其中的“单词”,并用“颜色”将它们着色

我尝试过使用ncurses,但问题在于使用windows。我不想刷新屏幕

我想在输出中打印字符串,就像
cout
函数一样。我的代码是C++语言,我在Linux上使用GCC。
最好的方法是什么?

就windows问题而言,我不知道您是否看过PDACURES,因此这里有一个so链接以防万一。

在windows上,您可以使用控制台API并操纵颜色:

  DWORD dummy = 0;
  const WORD color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; // gray
  HANDLE console = ::GetStdHandle (STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute (console, color);
  WriteConsoleA (console, msg.data (), msg.length (), &dummy, NULL);

或者,对于Linux,您可以使用(并非所有终端都支持,大多数(windows除外)都应该支持)

e、 g


Cout本身无法帮助您,这取决于您的打印目的地。您应该尝试使用ncurses(lookup cygwin)或尝试查找适用于windows的内容cmd@KarthikT这只是部分正确。他可以使用其
iword
pword
成员将格式状态添加到
std::cout
,并定义自定义操纵器。或者,他可以插入一个自定义的
std::streambuf
子类,在单词进入屏幕时对其进行着色。但是DOS文本缓冲区支持本身就足以解决这个问题。谢谢,但是可以将参数传递给printf函数吗?例如string s=“36m”并将函数传递给它?当然,这当然是可能的:
fprintf(标准输出,%s”“青色文本”“\e[0m”“,\e[0;36m”);
I在linux中编写代码,我想这里有一个误解。我的问题是指ncurses中的窗口概念,而不是Windows操作系统。无论如何,我感谢你的回答。
  fprintf (stdout, "\e[0;36m" "cyan colored text" "\e[0m");