如何让控制台输出覆盖控制台而不是纯文本输出?
How do I get the console output to write over the console rather than do plaintext output?
编辑:这是这个问题的续集。将颜色绘制到控制台会导致颜色闪烁
因此,在 C/C++ 中,像printf
和cout
这样的命令将写入明文输出。因此,为80×25文本显示和60fps设计的视频游戏必须每帧输出2000个字符的文本。我想在屏幕上写,比如说,将字符串写入第 4 行第 9 行或其他内容的字符串,而不是每次更改时不断附加明文。我不是说图形输出,这仍然是文本模式,但不是纯文本嵌入控制台类型的文本模式。
编辑:对于那些想知道的人,输出整个纯文本屏幕的每一帧动画的代码如下所示:https://github.com/PiotrGrochowski/testsortingvisualization/blob/master/test.cpp。它有时会出现故障,我还没有计算速度(无论是否为 60fps(。
编辑:文本显示是固定的80×25的概念确实意味着没有任何滚动或换行符的概念。
编辑:https://en.wikipedia.org/wiki/VGA-compatible_text_mode .如何在 C/C++ 编程中将其带到命令提示符?
对于光标位置和文本颜色等简单操作,可以使用 ANSI 转义码: https://en.wikipedia.org/wiki/ANSI_escape_code#Terminal_output_sequences 如果控制台支持它,这将起作用,它在Linux,Unix,Mac上,据称也在Windows 10中。
这里有一个例子:https://rosettacode.org/wiki/Terminal_control/Cursor_positioning#C.2FC.2B.2B
如果控制台支持 ANSI 转义代码,则以下内容将在第 6 行第 3 列打印"Hello":
#include <stdio.h>
int main()
{
printf(" 33[6;3HHellon");
return 0;
}
在 Windows 上,当控制台不支持 ANSI 时,有特定于 Windows 的功能:
#include <windows.h>
int main() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {3, 6};
SetConsoleCursorPosition(hConsole, pos);
WriteConsole(hConsole, "Hello", 5, NULL, NULL);
return 0;
}
您也可以将 ncurses 库用于 POSIX。
- C++:将控制台输出存储在宏中更好吗
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 如何修复此iFile以将.txt输出到控制台
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 控制台输出在 Qt5 中未正确显示
- 有人可以向我解释为什么控制台输出 0 吗?
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 使用 std::string_view 的子字符串控制台输出
- 从文件读取并通过矢量输出到控制台
- 在这种情况下,如何防止C++输出/控制台窗体关闭
- 如何在C++中居中输出控制台窗口
- boost::log 输出到 Visual Studio 输出控制台 - 为格式添加额外的 LF/CR
- C++:我如何保持我的程序(输出控制台)的活力
- 如何在Visual Studio中设置输出控制台宽度
- 如何在Qt GUI应用程序中嵌入输出控制台窗口
- 在Visual Studio中使用GLUT库,没有错误,但输出控制台不起作用
- 只在调试模式下输出控制台
- 简单的输入/输出控制台应用程序,不按给定的顺序(结构)打印问题
- Visual Studio 2012 - 嵌入式输出控制台,而不是cmd