【问题标题】: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 在看到他们的代码之前不要说“不能”...

标签: c++ string concatenation


【解决方案1】:

大胆猜测!

您正在打印连接的字符串

printf(str);

其中str"G1-2-%02d.jpg"

printf("G1-2-%02d.jpg");
             ^^^^
//            but, where is corresponding integer in the following?

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

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

printf("%s",str);

 

或者像 Chis 提到的那样使用双 %

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

【讨论】:

  • 实际上,这个猜测不错。当然%%02d 会修复它。
  • 这修复了格式字符串的一般问题:printf("%s", "G1-2-%02d.jpg");
  • %%02d 谢谢克里斯
  • 我希望你能解决问题,而不仅仅是症状。或者改用puts
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
相关资源
最近更新 更多