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

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

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

有这样的函数吗?
...全文
7199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-04-18
  • 打赏
  • 举报
回复
char s1[]="abc";
char s2[]="def";
char s12[100];
sprintf(s12,"%s%s",s1,s2);
作为一个C程序员,对 scanf,sscanf,fscanf printf,sprintf,fprintf 这类函数的用法,还是要做到“拳不离手,曲不离口”的。
Morrisss_ 2014-04-18
  • 打赏
  • 举报
回复
strcat.
lm_whales 2014-04-18
  • 打赏
  • 举报
回复
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;
movsd 2014-04-18
  • 打赏
  • 举报
回复
自己写一个,连接多个字符串,返回连接后的长度。

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);
流星-圣殿 2014-04-18
  • 打赏
  • 举报
回复
最简单、最保险的方法就是用标准库的string,strcat这些函数都必须自己事先分配内存的,即你说的破坏第一个字符串: char s1[] = "abc"; char s2[] = "def"; std::string sc = s1; sc += s2; // "abcdef"
starytx 2014-04-18
  • 打赏
  • 举报
回复
用string类库,直接用 + 号就连接起来生成新的string了
01世界里遨游 2014-04-18
  • 打赏
  • 举报
回复
建议用C++中自带的string类型,简单又方便。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧