目录
一、前言
二、memcpy函数用法
三、代码实现
一、前言
c++中想到字符串拼接,我们都知道可以用c++库中std::string的字符串中的简单加法进行拼接。示例:
int main()
{
std::string str1 = "hello";
std::string str2 = "World";
std::string str = str1 + str2;
std::cout << "str = " << str;
}
但如果用字符char声明的原生字符串,应该很少人能够想到实现这一功能,其实很简单只需要掌握c语言中的memcpy函数就能实现这一功能。
二、memcpy函数用法
在C语言中,memcpy
是一个库函数,用于从源内存块复制指定数量的字节到目标内存块。
memcpy
函数的原型如下:
void *memcpy(void *dest, const void *src, size_t n);
参数说明:
dest
:指向目标内存块的指针,即要复制到的位置。src
:指向源内存块的指针,即要从中复制数据的位置。n
:要复制的字节数。
三、代码实现
int main()
{
char str1[0x10]{ "123"}; // 初始化字符串大小为16字节,值为:“123”
char str2[0x10]{ "456" };
char str3[0x20];
// 将str1复制给str3
memcpy(str3, str1, strlen(str1));
// 将str2复制给str3,注意复制的起点指针地址为str的指针加上str1的字节大小
memcpy(str3 + strlen(str1), str2, strlen(str2) + 1);
std::cout << str3 << std::endl;
}
注意点:
memcpy(str3 + strlen(str1), str2, strlen(str2) + 1);
1.注意复制的起始位置,在将str2复制给str3时,注意复制的起点指针地址为str的指针加上str1的字节大小。
2.memcpy的第三个参数为str2的字节长度再+1,这里很重要,必须要加1。
这里的1指的是一个空字符为: \0,参考字符串在内存中的存储。字符串在这些语言中是以字符数组的形式存在的,并且它们以空字符(null character)\0
(其ASCII值为0)作为结记。
作用:这个空字符用于标识字符串的结束,因为C和C++中的字符串没有内置的长度信息,它们只是简单的字符数组。
如果不+1,最后打印结果为乱码: