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

使用Poco::format时百分号格式符异常:无法正确输出目标字符串

Poco::format 输出百分号的错误修正

问题出在占位符用错了,Poco::format里表示整数的占位符是%d,不是你写的%?d,多余的?会被当成普通字符输出,还打乱了参数匹配逻辑,才出现了奇怪的结果。

为啥原来的代码会出问题

你写的这段代码:

int var1 = 3
int var2 = 5
std::string s;
s = format("%?d%% and %?d%%",var1,var2);

Poco会这么解析:

  • %?里的?不是占位符的一部分,所以会直接输出?
  • 后面的d就是普通字符,直接输出
  • %%是转义写法,会输出单个%
    再加上第一个参数var1(值为3)被匹配到了第一个%,所以最终拼出3 ?d%,后面的参数和内容因为占位符错误没法正确处理。

正确的代码写法

把占位符里的?去掉,用标准的%d对应整数参数,%%输出百分号,代码改成这样:

int var1 = 3;
int var2 = 5;
std::string s;
s = Poco::format("%d%% and %d%%", var1, var2);

这样就能得到你想要的3% and 5%了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:50:39