如何用D将颜色打印到控制台?

时间:2012-02-19 16:17:40

标签: colors console escaping d

我已尝试使用writeln()函数转义序列,我也尝试将它们与从std.c.stdlib模块导入的printf()函数一起使用,但它只打印一个空行。

printf("\0x1B[5;32;40m Blink Text");

printf("\e[5;32;40m Blink Text\e[m");

writeln("\0x1b\x5b1;31;40m\tColor");

这些都不起作用。

我已经尝试过我能想到的一切,有办法吗?

搜索D网站的图书馆参考资料并没有帮助我。


编辑:解决方案

好的,所以我试图导入函数SetConsoleTextAttribute,正如Mars所建议的那样:

extern (Windows) bool SetConsoleTextAttribute(void*, ushort);

我还导入了另一个函数(我只是猜测我需要导入,因为我以前没有使用Win编程的经验)

extern (Windows) void* GetStdHandle(uint);

简单地称之为两个函数

auto handle  = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_BLUE);
writeln("In Color");

这非常有效,非常感谢您的时间和帮助

3 个答案:

答案 0 :(得分:6)

就像Cyber​​Shadow指出的那样,你必须使用\ x1B或\ 033。它应该可以正常工作,只要你在Linux上。 Windows虽然不支持这些代码。在这里,您必须使用std.c.windows.windows中的API函数SetConsoleTextAttribute

答案 1 :(得分:3)

字符串中有拼写错误:使用\x1B代替\0x1B

D不支持字符串中的\e转义码,请使用\x1B

答案 2 :(得分:2)