C++ 如何使输出文本在换行后从控制台的左上角开始

C++ 如何使输出文本在换行后从控制台的左上角开始,c++,windows,C++,Windows,在阅读了为什么我不应该使用system(“CLS”)之后,我使用了cout,因为您显然是在为Windows编写代码,所以您可以使用Windows控制台功能,如下所示: #include <windows.h> void ClrScrn(int attrib, char filler = ' ') { HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos = { 0, 0}; DWORD wri

在阅读了为什么我不应该使用system(“CLS”)之后,我使用了
cout,因为您显然是在为Windows编写代码,所以您可以使用Windows控制台功能,如下所示:

#include <windows.h>

void ClrScrn(int attrib, char filler = ' ') {

    HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos = { 0, 0};
    DWORD written;
    CONSOLE_SCREEN_BUFFER_INFO screen_attr;
    unsigned size;

    GetConsoleScreenBufferInfo(screen, &screen_attr);

    size = screen_attr.dwSize.X * screen_attr.dwSize.Y;

    FillConsoleOutputCharacter(screen, filler, size, pos, &written);
    FillConsoleOutputAttribute(screen, attrib, size, pos, &written);
    SetConsoleCursorPosition(screen, pos);
}
ClrScrn(FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_BLUE);
如果要将屏幕清除为非空白,也可以指定要填充的字符。例如,在蓝色背景上用深红色笑脸填充屏幕:

ClrScrn(FOREGROUND_RED | BACKGROUND_BLUE, '\1');

伙计,我忘了很久以前在C中做过类似的事情,在清除显示后,你们应该重置光标位置。你在用什么操作系统?@cameltooe怎么用?你能提供一个链接或代码片段吗?@VladimirLemin你在使用Windows?有什么方法可以让它通用吗?另外,如果我只想在普通控制台背景下使用它,我应该在函数调用中使用什么?“Universal”?你的意思是可移植的(例如,能够在Linux或MacOS上工作)?如果是这样,我可能会在makefile级别处理它——也就是说,为每个目标操作系统都有一个单独的实现,并在构建时决定使用哪个。“普通”控制台是浅灰色加黑色的,您可以使用:
ClrScrn(前景|蓝色|前景|红色|前景|绿色)
.Hm,是fillconsoleoutput字符(屏幕、大小、位置和写入);FillConsoleOutput属性(屏幕、0、大小、位置和写入);一个没有所有参数的工作替代方案?@VladimirLenin:至少你还需要
设置控制台或位置
(这就是将光标向上移动到左上角的原因,这是问题的原始主题)。