我试图使用ansi转义码为在终端中显示的一些字符串添加颜色。到目前为止,我还没有完全掌握ascii转义码的所有内容,只是尝试通过复制粘贴一些转义码来尝试。然后看到了这个答案,它要求验证程序是否应该检查它是否在终端中执行,否则就继续而不会用转义码污染字符串?
答案解释了使用*nix基于函数
答案解释了使用*nix基于函数
isatty()
,我发现它位于unistd.h
中,但根据我的理解,它没有在c标准中首先被提升到cunistd
。我尝试再次搜索SO,但无法理解。现在我有两个关于此的问题:
- 在什么环境(正确的词?)下,一个使用ascii转义码的程序可以执行需要进行初始检查?因为我只构建cli。
- 根据ISO cpp标准,处理此问题的适当解决方案是什么?使用
unistd.h
?这将符合现代cpp实践吗?
unistd.h
是一个POSIX头文件,它完全与C和C++标准无关。我认为这两个标准都没有终端的概念,因此您只能依赖系统API来获取特定于系统的功能。 - melak47