在此代码中,如果我将“ char * ”替换为“ string ”作为函数返回类型,保持整个代码不变,它会起作用吗? / p>
char* sum_str(char* s1, char* s2)
{
int lenS1 = strlen(s1);
int lenS2 = strlen(s2);
char* newString = malloc((lenS1 + lenS2 + 1) * sizeof(char));
int i = 0;
while(i < lenS1)
{
newString[i] = s1[i];
i++;
}
while(i < lenS2 + lenS1)
{
newString[i] = s2[i - lenS1];
i++;
}
newString[i] = '\0';
return newString;
}
答案 0 :(得分:4)
它将起作用 1 ,但这并不意味着char*
和string
返回类型相同。
可以从std::string
隐式构建char*
。因此,您返回一个新的string
实例,该实例拥有char*
指向的数据副本。它(几乎)与说这个相同:
std::string s = newString; // newString is your char*
return s;
请记住,您必须在free
上致电newString
。
在惯用的C ++中连接字符串的方法是
std::string s1 = ....;
std::string s2 = ....;
std::string s3 = s1 + s2;
1除非您有内存泄漏。在返回字符串之前,您必须在free
上调用newString
。