c – 检测`cout`是否输出到正确接受颜色的终端?
发布时间:2020-12-14 19:17:29 所属栏目:百科 来源:网络整理
导读:是否还有其他方法可以知道cout输出到正确接受颜色的终端? 我正在使用this header的颜色,我已经使用if(isatty(1))知道输出goes to a terminal. 不幸的是,当我向Xcode的控制台输出颜色时,我获得了未转义的序列 – 但是当它从OS中的Terminal.app或iTerm执行应
是否还有其他方法可以知道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可能是最佳选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |