C++ 为什么字符串连接在c+中会产生奇怪的结果+;?

C++ 为什么字符串连接在c+中会产生奇怪的结果+;?,c++,string,concatenation,C++,String,Concatenation,我试图在C++中连接两个字符串: "G1-2" + "-%02d.jpg" 我得到了以下结果: G1-2-1537817269.jpg 为什么结果不是这样:“G1-2-%02d.jpg”胡乱猜测 您正在通过打印连接的字符串 printf(str); 其中str是“G1-2-%02d.jpg” 如您所见,字符串中有一个%02d,而printf将查找整数参数。它找不到它,出现未定义的行为。在最好的情况下,它会用字符串打印出一个随机值 如果我的猜测是真的,那么尝试以以下形式打印字符串: prin

我试图在C++中连接两个字符串:

"G1-2" + "-%02d.jpg"
我得到了以下结果:

G1-2-1537817269.jpg
为什么结果不是这样:
“G1-2-%02d.jpg”

胡乱猜测

您正在通过打印连接的字符串

printf(str);
其中
str
“G1-2-%02d.jpg”

如您所见,字符串中有一个
%02d
,而
printf
将查找整数参数。它找不到它,出现未定义的行为。在最好的情况下,它会用字符串打印出一个随机值

如果我的猜测是真的,那么尝试以以下形式打印字符串:

printf("%s",str);

或者使用双
%
作为提示:

"G1-2-%%02d.jpg"

你能展示一些重现问题的代码吗?需要示例代码,因为它很难重现。inb4(a)s(n)printf、boost格式、fastformat等@onder,我们不知道你做错了什么,因为我们主要不知道你到底在做什么。@chris在看到他们的代码之前不会说“不能”…事实上,这是一个不错的猜测。当然,
%%02d
会修复它。这修复了格式字符串的一般问题:
printf(“%s”,“G1-2-%02d.jpg”)%%02d它可以工作了谢谢chrisI我希望你能解决原因,而不仅仅是症状。或者改用
put
"G1-2-%%02d.jpg"