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

2023-12-01

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

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

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


这个怎么样 (活生生的例子):

#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;
}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将输出对齐到屏幕中心 - C++? 的相关文章

随机推荐

  • 如何让 PHP 类构造函数调用其父类的父类构造函数?

    我需要 PHP 中的类构造函数调用其父类的构造函数parent s 祖父母 构造函数而不调用父构造函数 main class that everything inherits class Grandpa public function co
  • 将焦点设置在 WPF 中 ControlTemplate 内的控件上

    在我正在开发的应用程序中 我们有一堆自定义控件 其 ControlTemplates 在 Generic xaml 中定义 例如 我们的自定义文本框看起来类似于
  • Selenium 为什么将 firefox 驱动程序的acceptuntrustedcertificates 设置为 true 不起作用?

    我正在开发一些硒测试 我面临一个重要问题 因为当我使用安全连接测试我的网站时 我没有找到 真正的 解决方案 HTTPS 我在 stackoverflow 上找到的所有解决方案都已过时或不起作用 我正在 Firefox 中编写 Seleniu
  • 成功登录后 django admin 重定向

    我正在使用 Django 1 6 1 目前在我的项目中 成功管理登录后 管理系统将我带到管理仪表板 即 localhost 8000 admin 从这里我可以访问我的大部分应用程序 如用户 类别 组等 90 的时间我想访问用户管理页面 即
  • 针对 strcpy 但不针对 memcpy 的 C4996(函数不安全)警告

    我正在 VS2010 中编写代码 我碰巧在编译后看到编译器对 strcpy 和 sprintf 调用发出 C4996 警告 此函数或变量可能不安全 但是 我无法获得 memcpy 的类似警告 并且代码中可能还有一些类似的 不安全 函数调用
  • EC2微实例上的ubuntu在内存不足时自动重启Mysql

    当系统内存不足时 ubuntu 12 04会杀死mysql进程 Out of memory Kill process 17074 mysqld score 146 or sacrifice child 所以该进程最终被杀死 这种情况发生在服
  • 将路由组织到单独的文件中,在 Slim 中无法正常工作

    这是我的索引 php file use Psr Http Message ServerRequestInterface as Request use Psr Http Message ResponseInterface as Respons
  • 用ggplot中的函数定义的两条线之间的阴影区域[重复]

    这个问题在这里已经有答案了 我试图找到如何对 ggplot 中由函数定义的两条线之间的区域进行着色的可能性 我找到了一些使用 geom area 或 geom ribbon 的解决方案 但在这两种情况下 您都需要一个定义 ymin 和 ym
  • Google 地图动画相机位置 iOS 7 问题

    我正在尝试将 Google Maps API 安装到 iOS7 的应用程序中 在遵循 Google 的指南和视频后 我最终遇到了以下错误 GMSMapView animateToCameraPosition unrecognized sel
  • 如何在 Eclipse 中将控制台参数传递给应用程序?

    我在批处理文件中有以下行 java Client 127 0 0 1 9876 它包含我的 java 类的名称和两个参数 我的应用程序需要这些参数才能正常运行 在 Eclipse 中运行应用程序时有什么方法可以传递这些参数吗 这将使调试变得
  • 如何最好地控制迭代方向?

    我有一个装有大型对象的容器 复制这些对象的成本很高 我有时必须正常迭代整个容器 有时则必须反向迭代 一旦确定了迭代方向 我就不需要在飞行中更改 即不需要随机访问 我希望做这样的事情 include
  • Application_Start 未在 IIS 中触发

    在我的网络应用程序中 我在Global asax 中的 APPLICATION START 文件 当我在开发服务器上运行它时它一直在工作 然而 当我在 IIS 中托管它时 Application Start 事件未触发 任何人都可以帮我摆脱
  • 如何确定矩形何时重叠或相交?

    我找到了如何绘制矩形和一些代码来查找两个矩形何时重叠 但我无法连接这些过程 我有我想要的两个矩形 但无法确定它们是否相交 然后将此信息添加到列表框 这是我的代码 public partial class Form1 Form Graphic
  • 交替行颜色ListView xamarin表单

    我在 ListView 上绑定了一个 ObersvableCollection 我想改变我的 ListView 的行颜色 我找到了很多代码 但对我不起作用 如果你可以分享一个示例 样本 像这样 但我不知道我该怎么做 我使用 Visual S
  • R 中的历史方差误差分解图

    我在下面的链接中找到了如何估计 R 中 VAR 模型的历史方差分解 历史方差误差分解 Daniel Ryback Daniel Ryback 在 Excel 绘图中显示了结果 但我想用 ggplot 来准备它 所以我创建了一些行来获取它 尽
  • 打印给定元素排列的程序[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我最近参加了 ACM 认证的编程竞赛 这是我当时做不到的问题 给定一个包含 n 个元素的整数数组 编写一个程序来打印所有排列 请告诉我这道题该怎么做 有什么算法可以做这类题吗 假
  • 如何追踪 SIGABRT 的原因

    我出于示例目的展示了该问题的代码 但实际上我的问题是 我应该如何追踪和理解 SIGABRT 错误 我读过这个问题 sigabrt 没有错误消息 但是我认为这与我的问题无关 我下面将展示的示例显然不是 xib 问题 之前获得 SIGABRT
  • 如何在 Hyperledger Composer 中处理资产的表单、图像、视频

    在 Hyperledger Composer 模型文件中定义资产时 我们如何处理表单 图像 视频 有哪些可用的数据类型 例如 如果我的资产是房屋 并且我想存储房屋的图像 如何在资产中定义它 我已经参考过文档 它说可用的原始数据类型是字符串
  • 在 Magento 后端添加自定义仪表板“框”而不编辑默认模板的正确方法是什么?

    我正在努力创建一个我希望有一天能成为公开可用的 Magento 扩展的东西 我提到这一部分是因为我在这里做 正确的事 对我来说很重要 我想做的一件事是在默认的 Magento 仪表板中添加一个框 基本上是一个新的 框 与 前 5 个搜索词
  • 如何将输出对齐到屏幕中心 - C++?

    我正在开发 C 控制台应用程序 我想执行并打印应用程序窗口屏幕中心的所有内容 水平 垂直 如下所示 User xyz Pass 我想按照上面指出的那样运行我的整个程序 有什么办法可以做到吗