我有以下自定义 String
类的代码:
const String &String::operator+(const String &right)
{
String temp;
temp.length = length + right.length;
temp.sPtr = new char [temp.length + 1];
assert( sPtr != 0 );
strcpy(temp.sPtr, sPtr);
strcat(temp.sPtr, right.sPtr);
return temp;
}
其中 sPtr
是一个 char*
。
但是,当我在两个字符串上执行这个函数时,我得到了乱码,如下所示:
]√Hâ«Ö“x˘" = "The date is" + " August 1, 1993
我完全不知道发生了什么。我读过一些关于在连接结果字符串之前获得垃圾字符的人的评价,但我完全不明白为什么整个字符串都是垃圾字符。
任何帮助都会很棒。提前致谢!
最佳答案
不要通过引用返回“临时”对象。一旦函数结束,临时字符串将被取消分配,并且由于该字符串被设置为临时地址,它就变成了垃圾。
关于c++ - strcpy/strcat 奇怪字符输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078100/