如何在控制台中更改以前打印文本的颜色?

时间:2017-04-09 18:38:09

标签: c++ function colors handle

我目前有改变颜色的基本功能

--ngram f3

使用它是用于打印我理解的不同颜色的新文本,但我正在创建一个需要突出显示已打印文本的游戏。我知道这可以做到,但我不知道怎么做..

2 个答案:

答案 0 :(得分:0)

一种方法是删除当前文本并重新打印相同的文本,无论如何系统今天都快速点亮,这样你就不会有任何区别。

为此,我们使用\ r

cout << "something" << '\r' << flush.
  • &#39; \ r&#39;表示&#34;回车&#34;,它将进入行首。

  • &#39; flush&#39;意味着&#34;确保我刚刚打印的内容现在到达输出。

在此重印后,使用您选择的颜色重新打印相同的文字。

注意:这种情况发生得太快,您会觉得文字改变了颜色。

答案 1 :(得分:0)

正如其他人所说,你需要以不同的颜色重新打印相同的文字以“改变”颜色。

但是考虑到您正在使用Win32控制台,我认为建议依赖平台相关代码 - &gt; Setting the Cursor Position in a Win32 Console Application

移动光标可以更直接地控制您想要实现的目标(在控制台中重写/覆盖已打印的文本)。

另一个答案提到打印'\r'到控制台,它可以正常工作,但仅适用于当前行,因为在你自己周围移动光标可让你自由地“改变”整个缓冲区中的任何字符控制台。

另一方面,正如你已经提到过的,还有system("cls")人们可能认为这是一种更“独立于平台”的方式,但与a相比,它的速度非常慢(而且是一种hackish)直接控制所以我强烈建议不要使用它。 (如果你想知道为什么,请参阅system("pause"); - Why is it wrong?,授予它不同的命令但适用相同的原则)