C ++ String.Format实现错误

时间:2014-02-12 17:34:13

标签: c++

我正在尝试在C#中实现与String.Format的{​​{1}}相同的功能。但是,在某些情况下我输出有问题:

C++

总产量:

  

你好a0}你好ab}你好abc

     

你好

     

}

     

你好ab

     

_

     

你好abc

     

_

我很困惑,如果你能提供帮助,我将非常感激

2 个答案:

答案 0 :(得分:1)

我猜你忘了正确设置字符串长度。 “坏”输出只是结果字符串和旧字符串的最后一个字符。如果被更换件缩短了,你需要切断它。

memcpy(base_, tbase.c_str(), tbase.length());

length()不计算终止\0,因此您可能需要

strcpy(base_, tbase.c_str());

memcpy(base_, tbase.c_str(), tbase.length()+1);

答案 1 :(得分:1)

你应该替换:

    memcpy(base_, tbase.c_str(), tbase.length());

使用:

    strcpy(base_, tbase.c_str());

你计划从这个分配中释放内存吗? :

return *new format_base(base);
char *s = (char*)calloc(2, sizeof(char));
相关问题