gpt4 book ai didi

c++ - 在 C++ 中清除控制台

转载 作者:太空狗 更新时间:2023-10-29 20:30:08 25 4
gpt4 key购买 nike

我正在尝试清除 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 库函数。

提前致谢!

最佳答案

关于你的错误……你必须……

#include <iostream> 
#include <string>

using namespace std;

如果您只使用 Windows,请使用 Windows 控制台 API。如果您使用的是 linux\unix 终端,请使用转义码。您可以执行 #if 在这两种方法之间进行选择。

在linux\unix上使用这样定义的write函数:

write(1,"\E[H\E[2J",7); // we use ANSI escape sequences here.

这是解释如何执行此操作的 Microsoft 页面。

http://support.microsoft.com/kb/99261

微软用于控制台的非常糟糕的控制台 api 总是让我生气 :) 为什么要用 100 行代码来清除屏幕? :)

现在如果...您应该创建一个 clearscreen.h 文件和一个 clearscreen.cpp 文件。

在 clearscreen.h 中,我们只是放置了我们的函数。

 void clearconsole();

在 clearscreen.cpp 中,我们放置了两个操作系统的代码

#ifdef _WIN32 || _WIN64

#include <windows.h>

void clearconsole()
{
...
// 100 lines of codes copied from microsoft article
}

#else

#include <unistd.h>

void clearconsole()
{
write(1,"\E[H\E[2J",7);
}

#endif

关于c++ - 在 C++ 中清除控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7911166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com