如何使输出文本在控制台的左上角换行后开始
How to make output text start on top left corner of console after newlines
在阅读了为什么我不应该使用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');
相关文章:
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何防止clang格式在流运算符调用之间添加换行符<<
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Stream C++ 文本之前有一个额外的换行符
- 流:CSV 文件中的换行符
- 将缓冲区复制到剪贴板 [换行错误]
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- Clang-格式:在多行语句之后的换行符上打开大括号
- 如何正确转发/换行static_cast?
- 在输出流中插入换行符
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- QProcess::readAllStandardOutput() 和换行符
- 如果有换行符,clang 格式不会附加大括号
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- C++在标点符号后将字符串换行
- 提取后返回换行符的C++istream.get()
- 如何在出现换行符之前将多个整数作为输入?
- 正则表达式 获取两个换行符之间的文本
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 如何使输出文本在控制台的左上角换行后开始