我已经在 Internet 上尝试了多种将字符 append 到 char* 的方法,但它们似乎都不起作用。这是我的不完整解决方案之一:
char* appendCharToCharArray(char * array, char a)
{
char* ret = "";
if (array!="")
{
char * ret = new char[strlen(array) + 1 + 1]; // + 1 char + 1 for null;
strcpy(ret,array);
}
else
{
ret = new char[2];
strcpy(ret,array);
}
ret[strlen(array)] = a; // (1)
ret[strlen(array)+1] = '\0';
return ret;
}
这仅在传递的数组为“”(内部空白)时有效。否则它没有帮助(并且在 (1) 处出现错误)。你们能帮我解决这个问题吗?非常感谢!
最佳答案
删除 if
block 中隐藏外部 ret
的那些 char * ret
声明。因此你有内存泄漏,另一方面未分配的内存用于 ret
。
要比较 C 风格的字符串,您应该使用 strcmp(array,"")
而不是 array!=""
。您的最终代码应如下所示:
char* appendCharToCharArray(char* array, char a)
{
size_t len = strlen(array);
char* ret = new char[len+2];
strcpy(ret, array);
ret[len] = a;
ret[len+1] = '\0';
return ret;
}
请注意,您必须通过delete[]
处理返回的ret
分配的内存。
为什么不使用 std::string
?它有 .append
方法在字符串末尾 append 一个字符:
std::string str;
str.append('x');
// or
str += x;
关于C++ - 如何将 char append 到 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891962/