You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C++实现指定文本的矩形边框包裹输出?

给C++输出文本添加矩形边框的实现技巧

问题描述

现有一段C++代码输出指定文本,需要修改代码让这些文本被矩形边框包裹。当前代码如下:

#include <iostream>
 
using namespace std;
 
int main() {

    cout <<" * Programming Assignment *" << endl;
    cout <<" * Data Structures *" << endl;
    cout <<" * Author: Hello World  * " << endl;
    cout <<" * Due Date: September, 7th * " << endl;

    return 0;
}

期望的完整矩形边框包裹效果:

*******************************
* Programming Assignment     *
* Data Structures            *
* Author: Hello World        *
* Due Date: September, 7th   *
*******************************

实现技巧

  1. 统一文本存储与计算最大宽度
    把要输出的文本存入字符串数组,方便批量处理,同时计算出最长文本的长度,以此确定边框的统一宽度。
  2. 生成顶部/底部边框
    根据最长文本的长度,生成由*组成的边框线,长度为「最长文本长度 + 4」(对应每一行前后的* 和 *共4个额外字符)。
  3. 对齐输出每一行文本
    每一行先打印* ,接着输出文本,再用空格填充到最长文本的长度,最后打印 *,保证左右边框完全对齐。

修改后的完整代码

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

using namespace std;

int main() {
    // 存储所有要输出的文本内容
    vector<string> lines = {
        "Programming Assignment",
        "Data Structures",
        "Author: Hello World",
        "Due Date: September, 7th"
    };

    // 找出最长文本的长度
    size_t max_len = 0;
    for (const auto& line : lines) {
        if (line.size() > max_len) {
            max_len = line.size();
        }
    }

    // 打印顶部边框
    string border(max_len + 4, '*');
    cout << border << endl;

    // 逐行打印带边框的文本,自动对齐
    for (const auto& line : lines) {
        cout << "* " << line << string(max_len - line.size(), ' ') << " *" << endl;
    }

    // 打印底部边框
    cout << border << endl;

    return 0;
}

代码说明

  • 用vector<string>存储文本行,便于统一遍历和计算最长长度。
  • max_len确保所有行的宽度一致,边框和文本块完全匹配。
  • 填充空格的string(max_len - line.size(), ' ')解决了原代码中各行长度不一、边框错位的问题。

内容的提问来源于stack exchange,提问作者onix012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:45:56