C++ - 如何将char附加到char*?

son*_*xqt 11 c++ append char

我已经尝试过,可以在互联网上将角色附加到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;
}
Run Code Online (Sandbox Code Playgroud)

这仅在传递的数组为""(内部空白)时有效.否则它没有帮助(并在(1)处得到错误).你能帮帮我吗?非常感谢先进!

mas*_*oud 13

删除隐藏在外部的块char * ret内的声明.因此,你有内存泄漏,另一方面没有分配内存.ifretret

为了比较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;
}
Run Code Online (Sandbox Code Playgroud)

请注意,您必须处理ret由其返回的已分配内存delete[].

 

你为什么不用std::string?它有.append方法在字符串的末尾附加一个字符:

std::string str;

str.append('x');
// or
str += x;
Run Code Online (Sandbox Code Playgroud)

  • 小心泄漏。如果您不再需要新变量,则需要“删除 []”。或者更好地使用 `std::string`。 (2认同)