是否还有其他方法可以知道cout输出到正确接受颜色的终端?
我正在使用this header的颜色,我已经使用if(isatty(1))知道输出goes to a terminal.
不幸的是,当我向Xcode的控制台输出颜色时,我获得了未转义的序列 – 但是当它从OS中的Terminal.app或iTerm执行应用程序时它可以正常工作.
我想Xcode的控制台将自己标识为终端,但仍然忽略了颜色序列……
所以我希望有更好的检测 – 如果可能的话.
我的代码本身很简单,就像这样,如果isatty为真,则返回一个彩色字符串,然后它转到cout:
std::string Slot::description() { if(isatty(1)) { return FBLU("my_string"); } else { return "my_string"; } }
Xcode的输出:
iTerm的输出:
解决方法
特别是对于XCode,你可以检查getenv(“TERM”),因为它将在XCode中返回null,如果你在“真正的”终端中运行,则不应该这样做.
为了更可靠地确定您是否有彩色终端,ncurses可能是最佳选择.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。