gpt4 book ai didi

c++ - 在 C++ 中将彩色文本打印到控制台

转载 作者:可可西里 更新时间:2023-11-01 18:27:00 26 4
gpt4 key购买 nike

我想编写一个控制台类,可以将彩色文本输出到控制台。

所以我可以做类似的事情(基本上是 printf 的包装器):

Console::Print( "This is a non-coloured message\n" );
Console::Warning( "This is a YELLOW warning message\n" );
Console::Error( "This is a RED error message\n" );

如何将不同颜色的文本打印到 Windows 控制台?

最佳答案

查看 this guide .我会制作一个自定义操纵器,这样我就可以做类似的事情:

std::cout << "standard text" << setcolour(red) << "red text" << std::endl;

Here是关于如何实现您自己的操纵器的小指南。

一个简单的代码示例:

#include <iostream>
#include <windows.h>
#include <iomanip>

using namespace std;

enum colour { DARKBLUE = 1, DARKGREEN, DARKTEAL, DARKRED, DARKPINK, DARKYELLOW, GRAY, DARKGRAY, BLUE, GREEN, TEAL, RED, PINK, YELLOW, WHITE };

struct setcolour
{
colour _c;
HANDLE _console_handle;


setcolour(colour c, HANDLE console_handle)
: _c(c), _console_handle(0)
{
_console_handle = console_handle;
}
};

// We could use a template here, making it more generic. Wide streams won't
// work with this version.
basic_ostream<char> &operator<<(basic_ostream<char> &s, const setcolour &ref)
{
SetConsoleTextAttribute(ref._console_handle, ref._c);
return s;
}

int main(int argc, char *argv[])
{
HANDLE chandle = GetStdHandle(STD_OUTPUT_HANDLE);
cout << "standard text" << setcolour(RED, chandle) << " red text" << endl;

cin.get();
}

关于c++ - 在 C++ 中将彩色文本打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com