2012-02-05 50 views
5

在C++中的下列代码在控制台中运行将打印彩色文本:如何创建彩色文本?

cout << "\e[32;40mGreenForegroundAndBlackBackgroundText" << endl; 

在d我得到一个错误:

string s = "\e[32;40mGreenForegroundAndBlackBackgroundText"; // undefined escape sequence \e 

有没有什么办法让d这方面的工作?

+0

请记住,上面的转义序列在任何其他非ANSI终端中都不起作用。 – DejanLekic 2012-02-06 09:21:55

+0

我一直在为[此图书馆](http://code.google.com/p/decora)工作! (我不敢相信这是多么的偶然。) – Maxpm 2012-02-09 03:00:45

回答

8

转义字符的C++常量字符串转义\e是C的非标准GCC扩展,用于character escapes(也可能由Clang采用)。

你只需要把八进制编码它也许\033\x1b

不过要小心的是\e[32;40m不是标准C或C++,它是关系到tty -s ANSI终端转义序列。