C++ Оцентровка текста в консоли

Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Доброго времени суток, господа.
Не так давно, ко мне обратился начинающий программист с таким вопросом и я решил поделиться ответом здесь.
Знаю, что в гугле гайдов полно, но думаю комьюнити пригодиться если они будут и здесь :)

ss:
1679774773894.png

Моя реализация:

C++:
#include <iostream>
#include <Windows.h>
#include <iomanip>

void text_r(const char* s1)
{
    CONSOLE_SCREEN_BUFFER_INFO csbi;

    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    auto columns = csbi.srWindow.Right - csbi.srWindow.Left + 1;

    std::cout << std::setw(columns) << s1 << std::endl;
}

void text_c(const char* s1)
{
    CONSOLE_SCREEN_BUFFER_INFO csbi;

    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    auto columns = csbi.srWindow.Right - csbi.srWindow.Left + 1;

    std::cout << std::setw((columns / 2)) << s1 << std::endl;
}
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
это не похоже на ответ, измени ка размер этой хуйни? будет плохо

в целом, я вижу это как некий буфер, в который загоняются элементы на вывод. при изменении размера (разберёшься), начинаем высчитывать размеры заново.
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
это не похоже на ответ, измени ка размер этой хуйни? будет плохо
Ну это надо тогда писать реалтайм рендеринг с обновлением, а так можно просто ограничить возможность изменять размеры консоли.
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Сверху Снизу