【问题标题】:Handle escape sequences with ncurses? Does printf handle escape sequences?用 ncurses 处理转义序列? printf 是否处理转义序列?
【发布时间】:2012-04-18 14:53:38
【问题描述】:

我的程序从网络读取一些文本数据,例如: Hello \033[1;34mworld\033[0m and bla bla bla!!!\n"。 当程序使用 prinf 输出这个字符串时,单词“world”是蓝色的。但是当我将 ncurses 接口与 wprintw 或 addch 一起使用时,我会看到带有转义序列的原始字符串。 这是否意味着 printf 处理转义序列? 使用 ncurses 处理转义序列的最佳方法是什么?

【问题讨论】:

标签: c printf ncurses ansi-escape


【解决方案1】:

不,您的终端会处理转义序列。您看到的现象来自这样一个事实,即 ncurses 的全部目的是跟踪预期的终端内容并能够重新绘制它,并且作为这样做的一部分,它会去除任何转义序列。它可能会提供一个替代功能来解释它们并将它们应用到它自己的终端应该包含的图像中,但否则你必须自己完成这项工作......

【讨论】:

  • 谢谢!那么,我有两种方法是否正确:1.使用替代功能2.自己在程序中处理
  • 你能详细解释一下第一选择吗?我应该为此修补ncurses库还是有一些钩子?如果我使用第二种方式,我应该从远程端检查向我发送数据的 TERM 环境变量,还是应该使用另一种方式来确定远程端的终端类型。当我确定终端类型时,我想我应该使用 terminfo 数据库来阐明如何解释转义序列,是否正确?
  • 你绝对不应该修补 ncurses。如果它没有接受带有颜色转义的字符串的函数,则需要编写代码来处理带有颜色转义的字符串并将其转换为一系列 ncurses 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
相关资源
最近更新 更多