【问题标题】:Console overwriting like top控制台覆盖顶部
【发布时间】:2012-01-18 02:51:51
【问题描述】:

好吧,我只是想知道像top(1) 这样的控制台应用程序是如何覆盖多行的。我想知道如何为 C++ 或 C 执行此操作。我知道如何通过仅放置一个 \r 来覆盖 1 行,但我想知道如何为多行执行此操作,再次像顶部一样,或者如果它甚至可能。

【问题讨论】:

  • 它依赖于平台。你在哪个平台上?
  • Linux 可能是我想做的地方

标签: c++ c linux


【解决方案1】:

他们使用终端转义序列在屏幕上移动光标。一些甚至使用直接帧缓冲访问,将屏幕视为可以直接索引的字符数组。

curses(或ncurses)库是一个很好的抽象层。

【讨论】:

  • 只是一个注释,但诅咒在 Windows 上并不存在:Is ncurses available for Windows
  • @C.Ross:这个问题询问的是支持 curses API 的替代终端仿真器。 curses 当然可用于控制台模式应用程序。
  • pdcurses 实际上非常有用,我在将使用基本 ASCII 字符的 ncurses 应用程序移植到 Windows 上的 pdcurses 时没有任何问题。如果你使用 ncursesw,ncurses 的 UTF-8 兼容化身,你可能会遇到更多的麻烦。
  • @Daniel: cygwin 安装的 ncurses 应用如 vim 运行良好,我不明白为什么自开发应用程序应该有更多的问题。
【解决方案2】:

这可能不能直接解决问题,但这类事情取决于终端,通常通过 curses 实现来完成(ncurses 是最广泛使用的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多