是否可以设置控制台在开始删除顶部之前打印的行数?例如,是否可以将其设置为3并且仅显示最后3行?所以:
std::cout<<"line 1!"<<std::endl;
std::cout<<"line 2!"<<std::endl;
std::cout<<"line 3!"<<std::endl;
std::cout<<"line 4!"<<std::endl;
system("pause");
输出:
line 3!
line 4!
Press any key to continue...
^而不在侧面创建滚动条。
我一直在尝试使用Console::BufferHeight
,但我似乎无法让它发挥作用。这是我能找到的唯一一件似乎与我想做的事情相近的事情:http://msdn.microsoft.com/en-us/library/system.console.bufferheight.aspx但它只是展示了如何阅读它,而不是如何设置尺寸。由于某些原因,仅键入std::cout<<System::Console::BufferHeight;
会给我带来范围错误。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我想你想要这个:
实施例,
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SMALL_RECT rect = {0,0, 100, 100};
SetConsoleWindowInfo(hConsole, TRUE, &rect)
也看看这些(试验它们):
MSDN上有一个示例here。
答案 1 :(得分:0)
我也是编程新手,但我试过了:
while(!cin.get())
{
}
并且它有效,尝试将其放在代码的底部。它会在你的控制台上创造奇迹!
尝试更改其位置(将其放在代码中间)
答案 2 :(得分:0)
我建议你自己保留这些行,在一个快速的类中,说通过使用一个迭代器来循环放置下一行的循环,该迭代器总是设置为指向要输入的下一行。
<登记/>
接下来,使用FillConsoleOutputCharacter()
在您之前在那里打印的行上打印空白。
然后,在您希望输入开始的位置上方使用SetConsoleCursorPosition()
到四行(或多行所需的行),并在循环中输出每一行,从之后的迭代器开始。这将按照从最年长到最年轻的顺序打印所有行。
有一段时间了,所以我对C ++的了解有点朦胧,但这应该很简单标准库和win32库。