此问题是特定于操作系统的,无法使用标准 C++ 解决。正如您在评论中所说,您使用的是 Windows,您需要查看 Microsoft 提供的文档。
这里是与控制台交互的函数列表:https://docs.microsoft.com/en-us/windows/console/console-functions
你感兴趣的是
BOOL WINAPI SetConsoleScreenBufferSize(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwSize
);
如果您不知道控制台屏幕缓冲区是什么,微软在解释它方面做得比我做得更好,所以这里是:https://docs.microsoft.com/en-us/windows/console/console-screen-buffersenter link description here
对您来说重要的是,控制台屏幕缓冲区是一个二维数组。改变数组大小,你就改变了行的长度。
编辑 0:
这是我刚刚使用 Visual Studio 2017 和 C++ 在最新的 Windows 10 Insider 构建下编写的示例代码。
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),coordinates) 被执行后,一切都在一条线上,并且有一个滚动条。但是有一个问题:这个解决方案只有在用户不调整控制台大小的情况下才有效。一旦用户调整窗口大小,一切都和以前一样。这个问题可能可以通过挖掘微软的文档来解决。还没有机会做。
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
for (short int i = 0; i < 1000; i++)
{
cout << "a";
}
cout << endl;
_COORD coordinates;
coordinates.X = 1000;
coordinates.Y = 1000;
if (0 == SetConsoleScreenBufferSize(
GetStdHandle(STD_OUTPUT_HANDLE),
coordinates
))
{
return -1;
}
for (short int i = 0; i < 1000; i++)
{
cout << "b";
}
cout << endl;
return 0;
}
下面的代码不是必须的:
for (short int i = 0; i < 1000; i++)
{
cout << "b";
}
Windows 将重新格式化在重新占用缓冲区之前打印的任何内容。