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

How to make output text start on top left corner of console after newlines

本文关键字:左上角 换行 开始 控制台 何使 输出 文本      更新时间:2023-10-16

在阅读了为什么我不应该使用system("CLS")之后,我使用cout << string(100, 'n')来清除控制台屏幕。但是,新的文本将显示在控制台输出的最后一行。我怎样才能解决这个问题呢?

使用vc++ 2012

既然你显然是在为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);
}

这允许(要求)您在参数attrib中指定将被清除的颜色,因此使用将像这样:

ClrScrn(FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_BLUE);

如果你想清除屏幕上的空白,你也可以指定一个字符来填充。例如,在蓝色背景上用暗红色的笑脸填充屏幕:

ClrScrn(FOREGROUND_RED | BACKGROUND_BLUE, '1');