Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更新和多个控制台窗口_C++_C_Console Application - Fatal编程技术网

C++ 更新和多个控制台窗口

C++ 更新和多个控制台窗口,c++,c,console-application,C++,C,Console Application,我想写一个简单的c++/c控制台应用程序,显示我的进程1%2%。 现在,我一行一行地打印它,就像 finished 1% finished 2% 等等 如何在不打印新行的情况下更新百分比x% 另外,我想打开两个控制台窗口,一个显示消息,一个显示上述过程。如何打开另一个控制台窗口?在大多数终端上,您可以打印ASCII回车“\r”(值13十进制)以将光标返回到当前行的左侧,从而覆盖以前的值。或者,您可以发送退格('\b',ASCII 8)以向左移动单个字符。两者都不会自动删除已显示的内容,但您始终

我想写一个简单的c++/c控制台应用程序,显示我的进程1%2%。 现在,我一行一行地打印它,就像

finished 1%
finished 2%
等等

如何在不打印新行的情况下更新百分比x%


另外,我想打开两个控制台窗口,一个显示消息,一个显示上述过程。如何打开另一个控制台窗口?

在大多数终端上,您可以打印ASCII回车“\r”(值13十进制)以将光标返回到当前行的左侧,从而覆盖以前的值。或者,您可以发送退格('\b',ASCII 8)以向左移动单个字符。两者都不会自动删除已显示的内容,但您始终可以使用某些空格覆盖您不想再看到的任何内容。或者,您可以使用特定控制台(例如vt100、vt220…)支持的控制代码,该控制台可能具有更高级的功能,例如“清除到线路末端”。许多库可用于检测终端类型并使用其支持的代码,或者在必要时从许多较简单的库合成高级操作:在Linux和UNIX上,ncurses库是一个不错的选择


C++没有控制台窗口的概念。打开第二个窗口在很大程度上取决于您使用的操作系统,可能还取决于图形库,这两个都不是您指定的。不过,在任何操作系统上,您都可以让应用程序将一些消息写入文件,然后从自己打开的另一个窗口检查该文件。在Linux/UNIX上,实用程序“less”对于检查日志文件非常有用——除了向您显示运行less时的内容外,您还可以要求它“跟踪”写入文件的新数据

在大多数终端上,您可以打印ASCII回车“\r”(值13十进制)以将光标返回到当前行的左侧,从而覆盖以前的值。或者,您可以发送退格('\b',ASCII 8)以向左移动单个字符。两者都不会自动删除已显示的内容,但您始终可以使用某些空格覆盖您不想再看到的任何内容。或者,您可以使用特定控制台(例如vt100、vt220…)支持的控制代码,该控制台可能具有更高级的功能,例如“清除到线路末端”。许多库可用于检测终端类型并使用其支持的代码,或者在必要时从许多较简单的库合成高级操作:在Linux和UNIX上,ncurses库是一个不错的选择


C++没有控制台窗口的概念。打开第二个窗口在很大程度上取决于您使用的操作系统,可能还取决于图形库,这两个都不是您指定的。不过,在任何操作系统上,您都可以让应用程序将一些消息写入文件,然后从自己打开的另一个窗口检查该文件。在Linux/UNIX上,实用程序“less”对于检查日志文件非常有用——除了向您显示运行less时的内容外,您还可以要求它“跟踪”写入文件的新数据

您可以通过多种方式更新进度消息。您可以打印出退格字符,将光标向左移动,然后写入旧的输出。如果您的控制台支持ANSI转义序列,则可以使用转义序列来清空该行并重新绘制它


使用的最佳技术可能取决于您使用的控制台(不同的控制台支持不同的东西)。您使用的是什么平台,使用的是什么控制台?

您可以通过多种方式更新进度消息。您可以打印出退格字符,将光标向左移动,然后写入旧的输出。如果您的控制台支持ANSI转义序列,则可以使用转义序列来清空该行并重新绘制它


使用的最佳技术可能取决于您使用的控制台(不同的控制台支持不同的东西)。您使用的是什么平台,什么控制台?

在windows上,您可以将光标移动到屏幕上的任何位置,然后从那里开始打印:

COORD c;
c.X = x; c.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);

当然,您需要包括windows.h。在windows上,您可以将光标移动到屏幕上的任何位置,然后从那里开始打印:

COORD c;
c.X = x; c.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);

当然,您需要包括windows.h

您似乎在谈论windows控制台应用程序

每个Windows进程最多与一个控制台窗口关联


如果您需要两个控制台窗口,那么您可以启动另一个进程并向其输出,或者通过套接字或windows“Mailslot”或其他方式与之通信。

您似乎在谈论windows控制台应用程序

每个Windows进程最多与一个控制台窗口关联


如果您需要两个控制台窗口,那么您可以启动另一个进程并向其输出,或者通过套接字或windows“Mailslot”或其他方式与之通信。

Hmmm。。。就我所知,有点棘手,因为Windows确实提供了一个很好的工具,可以从控制台显示不断增长的文件内容。您可能希望自己编写一个程序来读取消息文件,然后从mani程序启动该程序。如果有帮助,您可以将文件名作为命令行参数传递给第二个查看程序ala
system(“view c:\tmp\messages.txt”)
.Hmmm。。。就我所知,有点棘手,因为Windows确实提供了一个很好的工具,可以从控制台显示不断增长的文件内容。您可能希望自己编写一个程序来读取消息文件,然后从mani程序启动该程序。如果有帮助,您可以将文件名作为命令行参数ala
system(“view c:\tmp\messages.txt”)
传递给第二个查看程序。