C++ 相关的string 函数(memcpy、memove、strtok、strchr、strlcpy)
一、memcpy和memove
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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; }
二、strtok
参考博客https://www.cnblogs.com/Bob-tong/p/6610806.html
三、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地址空间的大小
使用
https://www.cnblogs.com/chenyg32/p/3739564.html
等风起的那一天,我已准备好一切