【发布时间】:2011-10-27 02:36:40
【问题描述】:
我正在尝试清除 C++ 中的控制台。我知道打印多个换行符是一种不好的做法,因为它可能会很慢,而且完全清除控制台窗口并不总是可靠的,但我研究了多个选项,除了system("cls") 之外几乎没有找到其他解决方案,这是一个更糟糕的选择。
基本上,我使用了cout << string(100, '\n'); 行,但是当我尝试运行该程序时遇到了一个几乎无法识别的错误。
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
我也对此进行了研究,发现大多数解释对于我作为初级 C++ 程序员来说太复杂了,无法理解,或者与我的问题完全无关。
我的问题是 (1) 有没有办法修复这个错误,(2) 除了打印 100 个换行符之外,还有没有更好的跨平台清除控制台的方法?
我也听说过Console.clear(),但我不确定这是否是跨平台的。从我所见,它看起来更像是一个 Windows 命令。我也听说过 curses 库,我愿意研究和使用,直到我在某处读到不建议使用我熟悉的函数和 curses 库函数。
提前谢谢你!
【问题讨论】:
-
请参阅此处:stackoverflow.com/questions/228617/… 以获得第二个问题的答案。
-
清除屏幕是您想要的唯一非电传打字行为...或者您更普遍地想要诅咒行为(了解屏幕大小、定位光标、覆盖已写入的文本等) 。 ETC。)?如果是清除屏幕,我建议将其留给用户自己,因为在许多终端程序中都有击键。如果你无缘无故地在我的回滚缓冲区中写了一百个换行符......我个人会很生气!
-
@HostileFork 正如我所说,由于这些原因,我知道打印 100 个换行符是一种不好的做法。请问您知道哪些“击键”?
-
@NickLH 啊,是的,我也找到了那篇文章。不过,感谢您提供链接,以便我可以返回并再次查看!
-
@Abluescarab:
ctrl-v后跟escape再写[2J将清除屏幕
标签: c++