我想知道如何在C中以跨平台的方式打印彩色文本。我已经查看了论坛上的所有其他答案,但在我的测试(在Windows上(中,它们都不起作用。对于C++,我在图1中有工作代码,但当将代码转换为C并将字符串分配给变量时,我会得到错误u001b is not a valid universal character
(表2(。
图1
namespace Fore {
const std::string BLACK = "u001b[30m";
// Rest of code is not included since it is just a repetition of the above code with background and style ANSI codes as well.
图2
图片在这里,因为我还没有足够的声誉来嵌入图片。
C和C++对"通用字符名";(UCNs(,这是u
和U
序列的官方名称。(它们与"转义序列"不同,因为UCN可以在引用的文字之外使用,例如在标识符名称中。(
在C中,规则是:
通用字符名不应指定十六进制值为的代码点
- 小于00A0,而不是0024(
$
(、0040(@
(或0060(`
(- 在包括D800到DFFF的范围内;或
- 大于10FFFF82(
因此,在C中,不能将UCN用于控制字符,这就是错误消息告诉您的。
C++更慷慨;它允许您将UCN用于控制字符和其他具有小代码点的字符,但仅限于字符串和字符文本内部。(C++还禁止代理代码点和过大代码,即上述列表中的第二点和第三点。(
C和C++都允许您使用八进制转义序列(