Центрирование текста на экране в C++: подробное руководство

В этой статье блога мы рассмотрим различные методы центрирования текста на экране с помощью C++. Центрирование текста является общим требованием в консольных приложениях и может улучшить общее представление и удобство работы с пользователем. Мы предоставим примеры кода для каждого метода, чтобы помочь вам понять и реализовать их в своих проектах.

Метод 1: использование позиционирования курсора консоли.
Этот метод включает в себя манипулирование положением курсора консоли для центрирования текста. Вот пример фрагмента кода:

#include <iostream>
#include <windows.h>
void centerText(const std::string& text) {
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    int screenWidth = csbi.srWindow.Right - csbi.srWindow.Left + 1;
    int textWidth = text.length();
    int leftPadding = (screenWidth - textWidth) / 2;
    std::cout << std::string(leftPadding, ' ') << text << std::endl;
}
int main() {
    std::string text = "Hello, World!";
    centerText(text);
    return 0;
}

Метод 2: использование внешних библиотек
Существует несколько внешних библиотек для упрощения центрирования текста в C++. Одной из таких библиотек является ncurses. Вот пример, демонстрирующий центрирование текста с помощью ncurses:

#include <ncurses.h>
int main() {
    initscr();
    int y, x;
    getmaxyx(stdscr, y, x);
    std::string text = "Hello, World!";
    mvprintw(y / 2, (x - text.length()) / 2, text.c_str());
    refresh();
    getch();
    endwin();
    return 0;
}

Метод 3: использование изображений ASCII
Этот метод предполагает создание изображений ASCII с текстом, центрированным внутри них. Вот пример:

#include <iostream>
#include <string>
void centerText(const std::string& text) {
    int screenWidth = 80; // adjust according to your console width
    int textWidth = text.length();
    int leftPadding = (screenWidth - textWidth) / 2;
    std::cout << std::string(leftPadding, ' ') << text << std::endl;
}
int main() {
    std::string text = "Hello, World!";
    centerText(text);
    return 0;
}