zoukankan      html  css  js  c++  java
  • C++ 相关的string 函数(memcpy、memove、strtok、strchr、strlcpy)

    一、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

     参考博客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地址开始且含有''结束符的字符串复制到以dest开始的地址空间,

      并不会造成缓冲区溢出。

      使用 strlcpy,就不需要我们去手动负责 /0 了,仅需要把 sizeof(dst) 告之 strlcpy 即可。当src的长度大于等于size时,拷贝size-1个字符到dst中,并自动填充‘’,

      而且strlcpy返回的是src字符串的长度,而strncpy返回的是dest的指针

      注意:第三个参数是dst地址空间的大小

      

      使用

  • 相关阅读:
    Azure Cognitive Service 访问优化
    Azure Managed Disk 共享不灵,EventGrid + LogicApp 来搞
    AZURE ACI -- 无服务器化容器解决方案
    Global Azure 与 China Azure 互联
    小总结
    存储过程及Comm.cs类的创建
    DataGrid1
    根据经纬度和半径计算经纬度范围
    CheckBoxJS选中与反选得到Value
    每天学一点-Jquery判断checkbox是否为选中状态
  • 原文地址:https://www.cnblogs.com/-citywall123/p/13423075.html
Copyright © 2011-2022 走看看