C++相关的string函数(memcpy、memove、strtok、strchr、st。。。
⼀、memcpy和memove
void* memove(void*destin , void* source, size_t count) { //进⾏这样的判断是为了解决拷贝重叠的情况 if (destin > source) {
//这⾥拷贝的时候还可以提⾼效率
//因为CPU单次可以拷贝的最⼤字节是8个
//所以完全可以⽤long* 替代 char*(前提是count>8) char* a = (char*)destin; char* b = (char*)source; while (count--) { *b++ = *a++; } } else {
char* a = (char*)destin + count; char* b = (char*)source + count; while (count--) { *b-- = *a--; } }
return destin;}
memove
⼆、strtok
参考博客
三、strchr描述
C 库函数 char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第⼀次出现字符 c(⼀个⽆符号字符)的位置。
声明
下⾯是 strchr() 函数的声明。
char *strchr(const char *str, int c)
参数
str -- 要被检索的 C 字符串。c -- 在 str 中要搜索的字符。
返回值
该函数返回在字符串 str 中第⼀次出现字符 c 的位置,如果未找到该字符则返回 NULL。
实例
四、strlcpy
原型: size_t strlcpy(char *dst, const char *src, size_t size);
功能:C语⾔标准库函数strlcpy,是更加安全版本的strcpy函数,在已知⽬的地址空间⼤⼩的情况下,把从src地址开始且含有'\\0'结束符的字符串复制到以dest开始的地址空间,
并不会造成缓冲区溢出。
使⽤ strlcpy,就不需要我们去⼿动负责 /0 了,仅需要把 sizeof(dst) 告之 strlcpy 即可。当src的长度⼤于等于size时,拷贝size-1个字符到dst中,并⾃动填充‘\\0’, ⽽且strlcpy返回的是src字符串的长度,⽽strncpy返回的是dest的指针
注意:第三个参数是dst地址空间的⼤⼩
使⽤