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

如何用‘----’填充字符串实现测试日志中PASSED/FAILED结果对齐?

测试日志对齐问题的解决方案

当前测试日志输出未对齐:

test subject number 12 had result 0.12334 ------> PASSED!!!
test subject number 1 had result 56 ------> PASSED!!!
test subject number 123 had result 2 ------> FAILED!!!

需要实现的对齐效果:

test subject number 12 had result 0.12334 ------> PASSED!!!
test subject number 1 had result 56 ------------> PASSED!!!
test subject number 123 had result 2 -----------> FAILED!!!

原函数问题分析

你写的函数逻辑存在错误:循环条件i < 200 - initial_size完全不符合对齐需求,它会根据原字符串长度动态调整填充量,导致不同长度的原字符串最终填充后的总长度不一致,无法实现PASSED/FAILED的对齐。

修正后的代码

直接固定箭头的起始位置,通过填充短横线补全到该位置后再添加状态文本:

void AddPassedOrFailed(std::string& LogMessage, bool passed)
{
    // 设定箭头开始的目标列位置,可根据实际日志长度调整
    const int target_arrow_position = 40;
    int initial_length = LogMessage.size();

    // 填充短横线,直到字符串长度达到箭头位置的前一位
    if (initial_length < target_arrow_position - 1) {
        LogMessage.append(target_arrow_position - 1 - initial_length, '-');
    }

    // 添加箭头和状态信息
    LogMessage += "> ";
    LogMessage += passed ? "PASSED!!!" : "FAILED!!!";
    LogMessage += "\n";
}

修正说明

  1. 固定对齐基准:用target_arrow_position指定>出现的列位置,所有日志的箭头都会统一到这一列,自然实现状态文本的对齐
  2. 高效填充:使用std::string::append批量填充短横线,比循环逐个添加更简洁高效
  3. 逻辑清晰:先补全短横线到目标位置,再统一添加箭头和状态,避免原代码中循环条件混乱的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:07:27