我正在尝试在C#
中实现与String.Format
的{{1}}相同的功能。但是,在某些情况下我输出有问题:
C++
总产量:
你好a0}你好ab}你好abc
你好
}
你好ab
_
你好abc
_
我很困惑,如果你能提供帮助,我将非常感激
答案 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));