C++ - 如何将 char append 到 char*?

标签 c++ char append

我已经在 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/

相关文章:

c++ - 为什么我的函数有时会引发访问冲突?

c++ - 防火墙异常代码仅适用于传出连接

c++ - 查找数组中的出现次数

c - 为什么要从字符串中删除最后一个字符?

javascript - 谷歌地图 API : Appending Data

java - 具有事件驱动匹配的正则表达式实现?

matlab - 在 Matlab R2015 中计算字符串中数字和字符的函数

c - 如何停止打印有条件的字符串?

javascript - append li 时,它不会成为 ul "for real"的一部分吗?

c - rewind 和fsetpos 是否也可以干预C 文件追加方式的后续写入?