我只是想知道在用户将其输入控制台时是否可以对文本进行着色。
我正在使用cout
'ed文本的颜色库,但我想知道在用户输入他/她的字符串时是否可以为文本着色?
答案 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。