【发布时间】:2014-05-11 17:03:52
【问题描述】:
有没有办法让 Windows 在内部控制台颜色更改后输出 ansi 转义序列? 我知道像 ansicon 这样的东西,它会解释正在运行的程序输出的 ansi 转义序列,但我想知道 Windows 是否有办法通过标准输出转发这些转义序列。 例如
#include
#include
using namespace std;
HANDLE hCon;
enum Color { DARKBLUE = 1, DARKGREEN, DARKTEAL, DARKRED, DARKPINK, DARKYELLOW, GRAY, DARKGRAY, BLUE, GREEN, TEAL, RED, PINK, YELLOW, WHITE };
void SetColor(Color c){
if(hCon == NULL)
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon, c);
}
int main()
{
std::cout "\x1b[31;1m I should be red if printed on the console, otherwise I should have passed that ansi code to stdout.\n";
SetColor(GREEN);
cout "I should be green if printed on the console, but I should have passed the escape sequence to the stdout pipe..\n";
char x;
std::cin.get(x);
}
我希望在标准输出上发送的字节级数据采用所有 ansi 批准的文本,包括颜色代码和光标移动转义序列。我什至不确定这是可能的,但如果有人知道的话……这里就是知道它是否已经完成的地方。我也愿意自己滚动并将其添加到 ansicon。
【问题讨论】:
-
@Hans Passant:我不认为这个问题与您将其标记为重复的问题重复。虽然相似,但有一些关键的定义方面。您链接到的问题是如何对您的程序进行编程以输出 ascii。我一直在寻找一种方法让已经编译的程序给我 ansii 代码。
-
@Hans Passant:这个问题不是重复的;它试图解决您所链接问题的相反方向。
标签: c++ windows cmd console ansi