# PDbf **Repository Path**: licj520/PDbf ## Basic Information - **Project Name**: PDbf - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-07 - **Last Updated**: 2024-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PDbf Header-only版本的高性能DBF文件读写库,支持文件创建、读取和写入,使用内存缓存操作 ## 特性 1.支持DBF格式文件批量读写的C++库,使用原始的STL编写,使用C++标准语法。 2.每次读取和写入均使用行缓存,如果文件小或者机器硬件足够,全部操作可以直接在内存中完成,性能高。 3.其中`CIDbf`为虚类,列出了主要使用的函数接口,并封装了三个字符串去空白操作函数 4.其中`CPDbf`为主要类,实现了DBF的各种操作,使用时使用该类即可 5.其中`CCMPDbf`为附带类,使用`CPDbf`实现DBF文件对比 6.类`CPDbf`支持相同格式的DBF文件合并,函数为`int Append(CPDbf& oDbf)` ## 示例代码 1.创建DBF文件 ```cpp // 构建表头 char szBuf[128] = { 0 }; TDbfField oField; vector vecHeader; memset(&oField, 0, sizeof(oField)); for (size_t i=0; i<4; i++) { memset(szBuf, 0, sizeof(szBuf)); sprintf(oField.szName, "Field_%lu", i + 1); oField.cLength = rand() % 16 + 1; oField.cType = (i & 1) ? 'N' : 'C'; vecHeader.push_back(oField); } // 创建DBF文件 CPDbf oDbf; string strFile = "test.dbf"; if (oDbf.Create(strFile, vecHeader)) { printf("创建DBF文件失败\n"); return 0; } ``` 2.批量写入数据 ```cpp // 写入数据 size_t nNum = 32; if (oDbf.PrepareAppend(nNum)) { printf("申请预写入数据失败\n"); return 0; } for (size_t i = 0; i < nNum; i++) { if (oDbf.WriteGo(i)) { printf("跳转缓存行写指针失败\n"); return 0; } for (size_t j=0; j