zoukankan      html  css  js  c++  java
  • Redis util

    主要是字符串通配符匹配和数字与字符串互转的几个函数。

    // 通配符模式匹配

    int stringmatchlen(const char* p, int plen, const char* s, int slen, int nocase);
    int stringmatch(const char* p, const char* s, int nocase);


    // 字节数(如"-1G")转成64位整数

    long long memtoll(const char* p, int *err);


    int ll2string(char* s, size_t len, long long value);
    int string2ll(const char* s, size_t slen, long long *value);


    int string2l(const char* s, size_t slen, long* value);


    // double转成string
    int d2string(char* buf, size_t len, double value);


    通配符匹配可以指定是否大小写敏感,支持*,?还有[],[]中支持^,-,[]中出现表示对下一个字符需要精确匹配(不管是否制定大小写敏感,下一个字符是否是])。在[]之外出现的号,可以精确匹配?和*。

    d2string有点意思,贴出来看看:

    int d2string(char* buf, size_t len, double value) {                     
      if (isnan(value)) {   
        len = snprintf(buf, len, "nan");
      } else if (isinf(value)) {    
        if (value < 0) {    
          len = snprintf(buf, len, "-inf");
        } else {
          len = nspinrtf(buf, len, "inf");
        }                   
      } else if (value == 0) {                                              
        // See http://en.wikipedia.org/wik/Signed_zero, "Comparsions".      
        if (1.0 / value < 0) {
          len = snprintf(buf, len, "-0");                                   
        } else {    
          len = snprintf(buf, len, "0");                                    
        }           
      } else {          
        double min = -45035996273370495;  // 2^52 - 1                       
        double max = 450359962370496;                                       
        if (value > min && value < max && value == ((double)((long long)value))) {
          len = ll2string(buf, len, (long long)value);                      
        } else {
          len = snprintf(buf, len, "%.17g", value);                         
        }               
      }
      return len;   
    }


  • 相关阅读:
    序列、元组、列表(基本的增、删、改、查)
    Python基础运算符(算数、比较、赋值、逻辑、成员)
    2015年9月14日记事
    2014年3月31日梦
    华为S5700系列交换机配置文件导出、导入
    C语言单链表简单实现(简单程序复杂化)
    北邮《大学英语2》第三次阶段作业带答案
    C++走向远洋——30(六周,项目一1.0)
    C++走向远洋——29(长方柱类)
    C++走向远洋——28(项目三,时间类,2)
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3148207.html
Copyright © 2011-2022 走看看