我想让我的控制台更加丰富多彩。如何输入用户输入(通过getline获取)彩色的彩色?

时间:2017-09-01 03:32:43

标签: c++

我只是想知道在用户将其输入控制台时是否可以对文本进行着色。

我正在使用cout'ed文本的颜色库,但我想知道在用户输入他/她的字符串时是否可以为文本着色?

2 个答案:

答案 0 :(得分:2)

您可以使用Windows控制台API执行此操作:

HANDLE console_output = ::GetStdHandle(STD_OUTPUT_HANDLE);
::SetConsoleTextAttribute(console_output, FOREGROUND_GREEN);

std::string buffer;
std::getline(std::cin, buffer);
std::cout << buffer << std::endl;

::CloseHandle(console_output);

输入文字为绿色。另外,不要忘记包含windows.h

答案 1 :(得分:1)

在linux / macOS上,只需执行以下操作:

#include <iostream>

int main()
{
  std::string foo;
  std::cout << "Type your text here : \x1B[31m";
  std::cin >> foo;
  std::cout << "\x1B[0m" << std::endl;
  std::cout << "Your input : " << foo << std::endl;
  return (0);
}

一个小小的解释:

当您键入以下特定字符串之一时:

"\x1B[31m" (red)
"\x1B[32m" (green)
"\x1B[33m" (yellow)
"\x1B[34m" (blue)
"\x1B[35m" (magenta)
"\x1B[36m" (cyan)
"\x1B[0m" (reset)

它将使用termcap(代表终端功能)并更改之后写入的所有输出的颜色。 使用这些termcap后不要忘记重置,否则您的终端将坚持所选颜色,直到您重置它。

PS:不知道它是否适用于Windows。