我正在阅读Bjarne Stroustrup的《C++程序设计语言》第3版,并尝试完成其中所有练习。我不确定如何解决第6.6节中的第13个练习题,所以我想求助于Stack Overflow。以下是问题描述:
编写一个函数cat(),它接受两个C风格的字符串参数,并返回一个由这些参数连接而成的单个字符串。使用new为结果找到存储空间。
以下是我的代码,其中我不确定该做什么的地方用问号表示:
编写一个函数cat(),它接受两个C风格的字符串参数,并返回一个由这些参数连接而成的单个字符串。使用new为结果找到存储空间。
以下是我的代码,其中我不确定该做什么的地方用问号表示:
? cat(char first[], char second[])
{
char current = '';
int i = 0;
while (current != '\0')
{
current = first[i];
// somehow append current to whatever will eventually be returned
i++;
}
current = '';
i = 0;
while (current != '\0')
{
current = second[i];
// somehow append current to whatever will eventually be returned
i++;
}
return ?
}
int main(int argc, char* argv[])
{
char first[] = "Hello, ";
char second[] = "World!";
? = cat(first, second);
return 0;
}
以下是我的问题:
- 如何使用new找到存储器?我应该像
std :: string * result = new std :: string;
这样做,还是应该以某种方式使用new创建另一个C风格的字符串? - 与前面的问题有关,在cat()中应该返回什么?如果必须使用new,那么我认为它需要是指针。但是指向什么?
- 虽然问题没有提到使用delete来释放内存,但我知道我应该这样做,因为我将使用new进行分配。我应该在main结束之前删除吗?
strlen
与什么有关系吗? - Antonio