C++字符串拼接有多种方式,不同方式原理和性能会有一些差异,本文进行一个小小归纳对比,如有疏漏错误,欢迎指出。
本文源码解析使用glibc-2.32版本, C ++ 11。
C语言字符串拼接
1. 手工拼接操作
char *(char *dest, const char *src, size_t, n)
{
// 保存头部指针
char *s = dest;
// 找到字符串末尾位置
s1 += strlen (dest);
// 计算拼接长度
size_t ss = strnlen (src, n);
// 末尾置 '\0'
s1[ss] = '\0';
// 复制字符串
while (*s1++ !='\0')
{
*s1++ = *src++;
}
return s;
}
2. 使用strcat/strncat进行字符串拼接
在glibc中,strcat 使用了 strcpy 实现拼接
char *
STRCAT (char *dest, const char *src)
{
strcpy (dest + strlen (dest), src);
return dest;
}
strncat使用了 memcpy方法
char *
STRNCAT (char *s1, const char *s2, size_t n)
{
char *s = s1;
/* Find the end of S1. */
s1 +=