我正在尝试使用Xcode 4.1创建一个C ++控制台应用程序,但是在程序执行时我找不到清理屏幕的命令......
有什么想法吗?谢谢!
答案 0 :(得分:1)
OSX没有像Windows那样的“控制台”。它有伪终端,它对于在它们内部运行的程序就像一个老式的glass terminal,就像设置它们的程序的双向pipe一样。该外部程序可以使用内部程序的输入和输出做任何喜欢的事情。这些程序的值得注意的例子是Terminal.app,它模仿古老的VT-100和ssh,它通过安全通道将I / O转发到它自己的控制终端(可能本身就是伪终端)。这一切都是为了说没有一种方法可以保证工作,因为假终端外部的程序可能没有 一个“屏幕”,你可以有意义地“清除” “。 (Expect是类似程序的一个很好的例子。)
尽管如此,如果 是一个屏幕,那么现在你几乎可以指望它尊重VT-100控制代码。所以这应该做你想要的:
std::cout << "\033[2J" << std::flush;
如果您发现自己甚至需要一个控制代码,那么现在是时候将程序挂钩到ncurses,这为现代终端窗口能够实现的所有技巧提供了一个友好的API,并且如果您的程序附加到不 VT-100或其后代之一的终端(或模拟终端的程序),也会越来越不可能出现这种情况。