Этот вопрос относится к конкретной операционной системе и не может быть решен с помощью стандарта C ++. Как вы указали в комментарии, что используете Windows, вам нужно взглянуть на документацию, предоставленную Microsoft.
Вот список функций для взаимодействия с консолью: https://docs.microsoft.com/en-us/windows/console/console-functions
То, что вас интересует, это
BOOL WINAPI SetConsoleScreenBufferSize(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwSize
);
Если вы не знаете, что такое экранный буфер консоли, Micrososft лучше объясняет его, чем я, поэтому вот оно: https://docs.microsoft.com/en-us/windows/console/console-screen-buffers введите описание ссылки здесь
Важной частью для вас является то, что экранный буфер консоли является двумерным массивом. Измените размер массива, и вы измените длину строки.
РЕДАКТИРОВАТЬ 0:
Вот пример кода, который я только что написал в последней инсайдерской сборке Windows 10 с использованием Visual Studio 2017 и C ++.
После выполнения SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),coordinates)
все находится в одной строке и имеется полоса прокрутки. Но есть проблема: это решение работает, только если пользователь не изменяет размер консоли. Как только пользователь изменяет размер окна, все остается прежним. Вероятно, проблему можно решить, покопавшись в документации Microsoft. У меня еще не было возможности сделать это.
#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 переформатирует все, что было напечатано, до повторного изменения размера буфера.