c++ - 如何将输出对齐到屏幕中心 - C++?

标签 c++ windows formatting console-application

我正在开发 C++ 控制台应用程序。我想执行并打印应用程序窗口屏幕中心的所有内容(水平 + 垂直),如下所示。

 --------------------------------
|                               |
|                               |
|         User : xyz            |
|         Pass : ****           |
|                               |
|                               |
 --------------------------------

我想按照上面指出的那样运行我的整个程序。有什么办法吗?如有任何帮助或建议,我们将不胜感激。

最佳答案

这个怎么样(LIVE EXAMPLE):

#include <iostream>
#include <string>
#include <vector>


void centerify_output(std::string str, int num_cols) {
    // Calculate left padding
    int padding_left = (num_cols / 2) - (str.size() / 2);

    // Put padding spaces
    for(int i = 0; i < padding_left; ++i) std::cout << ' ';

    // Print the message
    std::cout << str;
}


int main() {
    std::vector<std::string> lines = {
        "---------------------------------",
        "|                               |",
        "|                               |",
        "|         User : xyz            |",
        "|         Pass : ****           |",
        "|                               |",
        "|                               |",
        "---------------------------------",
    };

    int num_cols = 100;

    // VIRTUAL BORDER
    std::cout << std::endl;
    for(int i = 0; i < num_cols; ++i) std::cout << ' ';
    std::cout << '|' << std::endl;

    // OUTPUT
    for(int i = 0; i < lines.size(); ++i) {
        centerify_output(lines[i], num_cols);
        std::cout << std::endl;
    }

    // VIRTUAL BORDER
    std::cout << std::endl;
    for(int i = 0; i < num_cols; ++i) std::cout << ' ';
    std::cout << '|' << std::endl;
}

你明白了。当垂直居中输出时,您只需将填充结束行放在控制台的顶部。

关于c++ - 如何将输出对齐到屏幕中心 - C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980361/

相关文章:

由 C++ OpenGL 重复

c++ - 如何对包含 const 值的 vector 进行排序

c# - 使用 C# 在 Windows Server 上添加和删除 IPSec 策略有哪些选项?

c - 可移植 GTK cmake 项目

c++ - 无法运行程序 “g++” : Launching failed - Eclipse C++

c++ - Boost::log:基于级别的不同格式(HTML 格式)

python - 条件格式 xlwt

c++ - centos上读取下一帧视频时出现Segmentation fault如何解决

c++ - 无法使用 OGR/GDAL 从 Shapefile 获取 EPSG

java - Java中不同类型的串联