C++中自定义字符串连接函数,当空间不足时怎么分配空间

C++中自定义字符串连接函数,当空间不足时如何分配空间
新手上路,多多照顾。谢谢各位

void StrContact(char * str1,char * str2)
//字符串连接
{
while(*str1!='\0')*str1++;
while(*str2!='\0')*str1++=*str2++;
*str1='\0';
}
如果传过来的str1【】空间足够大,那么这样就应该可以了吧。
但如果说str1[]空间放不下str2[]了呢,此时怎么处理是好??

//主函数
int main()
{
char str1[50]="cease to struggle and you cease to live.",str2[]="forever~~";
         StrContact(str1,str2);
        cout << endl;
}
c++ 字符串 空间分配

------解决方案--------------------
int l1=strlen(s1);
int l2=strlen(s2);
char* p=new char[l1+l2+1);
strcpy(p,s1);
strcpy(p+l1,s2);
return p;
------解决方案--------------------
还函数外面传进来的,确保得它的长度是足够的,
如果不够,应该在调用函数之前分配足够的空间!
------解决方案--------------------
如果传过来的str1【】空间足够大,那么这样就应该可以了吧。
但如果说str1[]空间放不下str2[]了呢,此时怎么处理是好??
R:这个str1的空间应该由调用StrContact的用户来保证
------解决方案--------------------
引用:
如果传过来的str1【】空间足够大,那么这样就应该可以了吧。
但如果说str1[]空间放不下str2[]了呢,此时怎么处理是好??
R:这个str1的空间应该由调用StrContact的用户来保证

+1
需要动态分配memory的话,一般会直接用std::string

std::string a("whatever");
std::string b(" however");
a += b;
std::cout<<a<<std::endl; //whatever however

------解决方案--------------------
http://baike.baidu.com/link?url=hjaVhUa4wylTSo4oaFkby5H9MpjIOT-GxtP2jRGzSsVRTGor7377IyeRcqJYJQ7EVHXyCjRUpV-L3lFY33dyna