gpt4 book ai didi

c++ - 返回时 C++ 字符串后的垃圾

转载 作者:行者123 更新时间:2023-11-28 07:35:09 25 4
gpt4 key购买 nike

我刚刚完成了 C++ 完整引用,并且正在创建一些测试类以更好地学习这门语言。我做的第一个类是模仿Java的StringBuilder类,返回字符串的方法如下:

char *copy = new char[index];
register int i;
for(i = 0; i <= index; i++) {
*(copy + i) = *(stringArray + i);
} //f

return copy;

stringArray 是保存正在构建的字符串的数组,index 表示已输入的字符数。

当字符串返回时,它后面有一些垃圾,比如如果创建的字符串是 abcd,结果是 abcd 后面有 10 个随机字符。这些垃圾从哪里来?如果您需要查看更多代码,请询问。

最佳答案

您需要以 null 终止字符串。该空字符告诉计算机字符串何时结束。

char * copy = new char[ length + 1];
for(int i = 0; i < length; ++i) copy[i] = stringArray[i];
copy[length] = 0; //null terminate it

只是一些事情。为了良好的实践,在尽可能小的范围内声明 int 变量。这是一个很好的做法,这样不需要的范围就不会被填充,也更容易调试和跟踪。并删除 'register' 关键字,让编译器确定需要优化的内容。尽管 register 关键字只是提示,但除非您的代码对性能非常严格,否则暂时忽略此类内容。

关于c++ - 返回时 C++ 字符串后的垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com