我已经尝试过,可以在互联网上将角色附加到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)
| 归档时间: |
|
| 查看次数: |
93470 次 |
| 最近记录: |