有把两个字符串连接起来的函数吗?

时间:2022-04-27 19:09:46
比如“abc"和"def",我想把两个字符串连接起来,我知道有一个函数叫strcat,但这个函数在连接字符串时,也破坏了第一个字符串。我希望不要破坏第一个字符串。就类似于php语言中的“."

“abc"."def"就等于"abcdef",使用一次就废弃的。

有这样的函数吗?

7 个解决方案

#1


建议用C++中自带的string类型,简单又方便。

#2


用string类库,直接用 + 号就连接起来生成新的string了

#3


最简单、最保险的方法就是用标准库的string,strcat这些函数都必须自己事先分配内存的,即你说的破坏第一个字符串:
char s1[] = "abc";
char s2[] = "def";
std::string sc = s1;
sc += s2;   // "abcdef"

#4


自己写一个,连接多个字符串,返回连接后的长度。

int ConnectString(char *pszDest,...)
{
char *pTemp;
const char *pszSrc;
va_list pArgList;

pTemp=pszDest;
va_start(pArgList,pszDest);
while ((pszSrc=va_arg(pArgList,const char *))!=NULL)
{
while (*pszSrc!=0)
{
*(pTemp++)=*(pszSrc++);
}
}
va_end(pArgList);
*pTemp=0;
return pTemp-pszDest;
}

用法:

char p[100],p1[]="123",p2[]="456",p3[]="789";
iLength=ConnectString(p,p1,p2,p3,NULL);

#5


1)字符串字面值常量 ,不需要任何符号,就可以连接
"abc""efg" == "abc" "efg"  == 
"abc"
"efg" 
=="abcefg"

2)C非常量字符串,自然要用strcat了,不然,自己写函数实现。
3)C++ string 字符串类,+,+=就是连接符,这个类重载了operator +(),operator +=()。
        string a("abc");
a+="efg";
cout<<a<<endl;
cout<< a+"hij"<<endl;
cout<<string ("abc")+"efg"<<endl;

#6


strcat.

#7


char s1[]="abc";
char s2[]="def";
char s12[100];
sprintf(s12,"%s%s",s1,s2);

作为一个C程序员,对
 scanf,sscanf,fscanf
 printf,sprintf,fprintf
这类函数的用法,还是要做到“拳不离手,曲不离口”的。

#1


建议用C++中自带的string类型,简单又方便。

#2


用string类库,直接用 + 号就连接起来生成新的string了

#3


最简单、最保险的方法就是用标准库的string,strcat这些函数都必须自己事先分配内存的,即你说的破坏第一个字符串:
char s1[] = "abc";
char s2[] = "def";
std::string sc = s1;
sc += s2;   // "abcdef"

#4


自己写一个,连接多个字符串,返回连接后的长度。

int ConnectString(char *pszDest,...)
{
char *pTemp;
const char *pszSrc;
va_list pArgList;

pTemp=pszDest;
va_start(pArgList,pszDest);
while ((pszSrc=va_arg(pArgList,const char *))!=NULL)
{
while (*pszSrc!=0)
{
*(pTemp++)=*(pszSrc++);
}
}
va_end(pArgList);
*pTemp=0;
return pTemp-pszDest;
}

用法:

char p[100],p1[]="123",p2[]="456",p3[]="789";
iLength=ConnectString(p,p1,p2,p3,NULL);

#5


1)字符串字面值常量 ,不需要任何符号,就可以连接
"abc""efg" == "abc" "efg"  == 
"abc"
"efg" 
=="abcefg"

2)C非常量字符串,自然要用strcat了,不然,自己写函数实现。
3)C++ string 字符串类,+,+=就是连接符,这个类重载了operator +(),operator +=()。
        string a("abc");
a+="efg";
cout<<a<<endl;
cout<< a+"hij"<<endl;
cout<<string ("abc")+"efg"<<endl;

#6


strcat.

#7


char s1[]="abc";
char s2[]="def";
char s12[100];
sprintf(s12,"%s%s",s1,s2);

作为一个C程序员,对
 scanf,sscanf,fscanf
 printf,sprintf,fprintf
这类函数的用法,还是要做到“拳不离手,曲不离口”的。