Linux读取文件到jsoncpp

来源:互联网 发布:以太网数据帧格式 mii 编辑:程序博客网 时间:2024/05/29 13:31
Json::Value conf;int file=::open("pathname",O_RDONLY);if(file<0)return -1;struct stat statbuf;//文件状态结构体if(::fstat(file,&statbuf)<0) //获取文件状态信息{return -1;}void *src=0;if((src=::mmap(0,statbuf.st_size,PROT_READ,MAP_SHARED,file,0))==MAP_FAILED)//start:映射区的开始地址,设置为0时表示由系统决定映射区的起始地址{return -1;}int skip_src_size=statbuf.st_size;const unsigned char *skip_src=skipBOM((const unsigned char *)src,&skip_src_size);if(this->parse((const char *)skip_src,((const char *)skip_src)+skip_src_size,conf)==false){return -1;}if(::munmap(src,statbuf.st_size)<0){return -1;}::close(file);



去掉文件内容的前缀BOM

const unsigned char *skipBOM(const unsigned char *str, int *size){    const char *p = "\xEF\xBB\xBF"; /* Utf8 BOM mark */    const unsigned char *c = (const unsigned char *)str;    int i = 0;    do {        if (i > *size)            break;        if (*c != *(const unsigned char *)p++)        {            *size -= i;            return c;        }        ++i;        ++c;    } while (*p != '\0');    *size -= i;    return c;}


原创粉丝点击