着色字符串中的特殊单词

时间:2013-01-22 07:26:33

标签: c++ linux colors

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

class ColorGr
{
    string word;
    string color;
    ColorGr *next;
}

我有一个字符串,我想在其中搜索“word”,并用“color”将它们着色。

我试过ncurses这样做,但问题是使用Windows。我不希望屏幕被刷新。

我想在输出中打印字符串,就像cout函数一样。我的代码是用c ++语言编写的,我在linux下使用gcc。 这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

在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);

more colors here (link)

或者另一种方式,对于Linux,您可以使用ANSI color codes(并非所有终端支持,大多数(Windows除外)应该。)

e.g。

  fprintf (stdout, "\e[0;36m" "cyan colored text" "\e[0m");

答案 1 :(得分:0)

就windows问题而言,我不知道你是否看过PDACurses,所以这里有一个SO链接以防Ncurses workaround for windows