如何创建分屏控制台输出?

时间:2011-01-28 18:09:44

标签: c++

我希望能够将两个文本流引导到一个具有垂直拆分视图的控制台窗口。理想的解决方案是,如果我可以简单地写入两个不同的std :: ostream对象。

我需要它的原因是比较两个不同版本的程序的输出。我知道有一些简单的解决方法,如重定向到文件和使用diff程序来查看差异。但这并不重要,因为这个项目主要是为了好玩。

但我不确定如何实现这一目标。假设左半部分在右半部分之前写入了20行输出。如何向上移动光标以写入右半边?

有谁可以给​​我一些关于如何开始的指示?这可以用纯C ++完成,还是需要特定于平台的功能?

3 个答案:

答案 0 :(得分:6)

仅使用“纯c ++”无法做到这一点。您将需要其他可能特定于平台的库来实现所需的行为。例如,查看ncurses库。

答案 1 :(得分:2)

您可以在olde终端应用程序中找到一些用于文本聊天的开源代码,这些代码在水平分割时也是如此。

回到足够远,你会发现ansi escape sequences的用法。

写一些新的ncurses可能是要走的路。

顺便说一句,我认为来自乌龟的差异/合并工具是好的,从使用它真的表明简单地将代码放在彼此旁边可能不足以进行有用的眼球比较。你真的从计算机的色彩和额外价值中获得了很多,为你找到差异。

答案 2 :(得分:1)

Jlib可能有所帮助。

  

一个能够着色输入和输出的控制台库。包括用户可定义的菜单,ASCII字符窗口,保存/恢复屏幕的字符,256控制台颜色组合和智能着色。