为啥字符串连接在 C++ 中得到奇怪的结果? [关闭]
Posted
技术标签:
【中文标题】为啥字符串连接在 C++ 中得到奇怪的结果? [关闭]【英文标题】:why string concatenation getting strange result in c++? [closed]为什么字符串连接在 C++ 中得到奇怪的结果? [关闭] 【发布时间】:2013-08-27 00:34:40 【问题描述】:我正在尝试在 C++ 中连接两个字符串:
"G1-2" + "-%02d.jpg"
我得到以下结果:
G1-2-1537817269.jpg
为什么不是这样的结果:"G1-2-%02d.jpg"
【问题讨论】:
你能展示一些重现问题的代码吗? 需要示例代码,因为它很难重现。 inb4 (a)s(n)printf、boost 格式、fastformat 等 @onder,我们不知道你做错了什么,因为我们主要不知道你到底在做什么。 @chris 在看到他们的代码之前不要说“不能”... 【参考方案1】:大胆猜测!
您正在打印连接的字符串
printf(str);
其中str
是"G1-2-%02d.jpg"
printf("G1-2-%02d.jpg");
^^^^
// but, where is corresponding integer in the following?
如您所见,字符串中有一个%02d
,printf
将寻找一个整数参数。它找不到它并发生未定义的行为。在最好的情况下,它会用字符串打印出一个随机值。
如果我的猜测是真的,那么尝试以这种形式打印字符串:
printf("%s",str);
或者像 Chis 提到的那样使用双 %
:
"G1-2-%%02d.jpg"
【讨论】:
实际上,这个猜测不错。当然%%02d
会修复它。
called it
这修复了格式字符串的一般问题:printf("%s", "G1-2-%02d.jpg");
%%02d 谢谢克里斯
我希望你能解决问题,而不仅仅是症状。或者改用puts
。以上是关于为啥字符串连接在 C++ 中得到奇怪的结果? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我得到这个奇怪的结果:[BLOB - ...]? [复制]
为啥在java中打开流后一定要关闭流??好像关不关没有不同,程序的结果都是一样的。。。
为啥我在 C++ 中使用 socket.h 通过 Internet 发送的字符串中有奇怪的数据? [关闭]