哪个C ++函数改变文本或背景颜色(MS Visual studio)?例如cout<<"This text";
如何制作&#34;此文字&#34;红色。
答案 0 :(得分:14)
您可以使用Win32更改控制台应用程序的颜色,以下是如何:
的示例#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int main(void)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
if (hStdout == INVALID_HANDLE_VALUE)
{
cout << "Error while getting input handle" << endl;
return EXIT_FAILURE;
}
//sets the color to intense red on blue background
SetConsoleTextAttribute(hStdout, FOREGROUND_RED | BACKGROUND_BLUE | FOREGROUND_INTENSITY);
cout << "This is intense red text on blue background" << endl;
//reverting back to the normal color
SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return EXIT_SUCCESS;
}
查看SetConsoleTextAttribute
函数的MSDN文档和Console Screen Buffers以获取更多信息。
使用Win32的控制台应用程序的更完整示例可用here。
答案 1 :(得分:8)
颜色不是C ++的东西,而是终端的属性。如果您的终端使用ANSI(例如任何Linux终端,或者如果您将DEVICE=C:\DOS\ansi.sys
添加到config.sys
,则为DOS或Windows NT,如果您使用cmd.exe /kansicon
调用shell,则更新Windows),那么您可以尝试下面的噱头:
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_GREEN "\x1b[32m"
#define ANSI_COLOR_YELLOW "\x1b[33m"
#define ANSI_COLOR_BLUE "\x1b[34m"
#define ANSI_COLOR_MAGENTA "\x1b[35m"
#define ANSI_COLOR_CYAN "\x1b[36m"
#define ANSI_COLOR_BRIGHT "\x1b[1m"
#define ANSI_COLOR_RESET "\x1b[0m"
std::cout << ANSI_COLOR_RED "Hello World\n" ANSI_COLOR_RESET;
答案 2 :(得分:2)
我相信您正在寻找SetConsoleTextAttribute
功能。第一个参数hConsoleOutput
将是通过GetStdHandle(STD_OUTPUT_HANDLE)
获得的标准输出句柄。第二个参数是所需character attributes的按位OR(|
)组合。