使用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
相关产品推荐
相关产品推荐

