C++中如何在String拼接语句内添加运行时条件判断
实现方案
采用分步拼接逻辑,先拼接所有固定存在的前置语句,再通过num的条件判断决定是否插入指定子句,最后拼接固定的后置语句即可,代码实现如下:
String Statement = "Timer Main\n" "Sharm v7 (" + IntToStr(Value) + ")\n" "Get All Values " + FloatToStr((float)GetAllValues/50, 1, 2) + "\n" "Sum of Values " + FloatToStr((float)SumOneValue/50, 2, 4) + "\n"; // num不为0时拼接对应统计行 if (num != 0) { Statement += "% for " + FloatToStr(((float)num)*100.0, 12, 2) + "\n\n"; } Statement += "--------------------------------\n";
如果希望代码更简洁,也可以使用三目运算符实现单行判断拼接,可读性略低于分步判断写法:
String Statement = "Timer Main\n" "Sharm v7 (" + IntToStr(Value) + ")\n" "Get All Values " + FloatToStr((float)GetAllValues/50, 1, 2) + "\n" "Sum of Values " + FloatToStr((float)SumOneValue/50, 2, 4) + "\n" + (num != 0 ? "% for " + FloatToStr(((float)num)*100.0, 12, 2) + "\n\n" : "") + "--------------------------------\n";
注意事项
- 注意保留原语句的换行、缩进格式,避免最终拼接出来的语句格式混乱
- 若项目使用C++11及以上标准,也可改用
std::stringstream完成多段内容拼接,后续调整语句顺序、增减判断逻辑的成本更低
内容的提问来源于stack exchange,提问作者Adi Sur
相关产品推荐
相关产品推荐

