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

时间:2015-07-28 02:28:01

标签: c++ windows

在阅读了我不应该使用系统(“CLS”)的原因后,我使用cout << string(100, '\n')来清除控制台屏幕。但是,新文本将显示在控制台输出的最后一行。我该如何解决这个问题?

使用VC ++ 2012。

1 个答案:

答案 0 :(得分:2)

由于您显然正在为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');