strcpy
char *strcpy(char *dest, const char *src);// 返回 dest
会拷贝包括结尾的 \0 在内的字符
注:
- 如果
dest长度不足,则情况是未知的 - 如果
src的长度小于dest,则dest比src多的部分不会被覆盖
安全版本 strncpy
字符串拷贝的安全版本,功能和 strcpy 相同
可以指定最多往 dest 中拷贝多少个字符
使用示例:
const char *src = "hello world";char dest[6] = {'1', '2', '3', '4', '5', '6'};std::strncpy(dest, src, 5);// dest 中的内容为:['h', 'e', 'l', 'l', 'o', '6']
如果进行字符串的拷贝,记得确保 dest 的最后一位是 \0
注:
- 如果
dest的长度小于cnt,结果会是未知的 - 如果
src的长度小于cnt,不足的位回以\0填充
memcpy
函数原型为:
void *memcpy(void *dest, void *src, size_t cnt);// 返回值是 dest
这个函数的使用非常直观
memmove
函数原型为:
void *memmove(void *dest, void *src, size_t cnt);// 返回 dest
将 src 中的内存拷贝到 dest 中,拷贝 cnt bytes 的内存
这个函数允许 src 和 dest 内存交叠
使用示例:
char src[5] = {'1', '2', '3', '4', '5'};memmove(src, src + 1, 2);// src 中的内容为:['2', '3', '3', '4', '5']
memset
为一段内存填充内容
void *memset(void *dest, int ch, std::size_t count);// 返回 dest
函数参数中的 ch 是整形类型,会将其转换为 unsigned char 类型,再填充到 dest 中
strcat
字符串拼接
函数原型为:
char *strcat(char *dest, const char *src);// 返回 dest
注意不要超出 dest 的大小
注:
- 如果拼接完后,超出了
dest的大小,则会发生截断,且无法保证dest的最后一位是\0
安全版本 strncat
字符串拼接
strncat(char *dest, const char *src, size_t n);
注:
- 如果
src的长度大于n,则会发生截断; - 如果
dest的空间不足,无法保证最后一位是\0
使用示例:
const char *src = "abc";char dest[6] = {'1', '2', '3', '\0', '-', '-'};strncat(dest, src, 2);// dest 的内容为:['1', '2', '3', 'a', 'b', '\0']strncat(dest, src, 2);// dest 的内容为:['1', '2', '3', 'a', 'b', 'a']
