shapelib 读取DBF

本文介绍如何在C++环境中使用shapelib库来配置环境并操作DBF文件,包括打开文件、获取文件的基本信息如列数和行数、读取不同类型的字段数据等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.配置shapelib环境:拷贝shapelib.lib 和shapefil.h到工程目录下面。并且配置lib

操作DBF文件:

BOOL CSecurityMatainWnd::ImportFromDBF(const CString sFileName)
{
    DBFHandle pdbf = DBFOpen((char *)C22<MAX_PATH>(sFileName), "r+b");
    if (pdbf)
    {
        //> 获取DBF行数和列数目
        int iColCount = DBFGetFieldCount(pdbf);
        int iRowCount = DBFGetRecordCount(pdbf);//行数仅仅是内容的行数,不包含行头
        DBFFieldType filedType[64];
        char szfiledName[64] = "";
        int nWidth = 0;
        int nDecimal = 0;

        //保存没一列的数据类型
        for (int iCol = 0; iCol < iColCount; ++iCol)
        {
            filedType[iCol] = DBFGetFieldInfo(pdbf, iCol, szfiledName, &nWidth, &nDecimal);
        }

        for (int iRow = 0; iRow < iRowCount; iRow++)
        {
            for (int iCol = 0; iCol < iColCount;++iCol)
            {
                ///> 通过列的数据类型读取数据
                switch (filedType[iCol])
                {
                case FTString:
                {
                    const char *val = DBFReadStringAttribute(pdbf, iRow, iCol);
                    int a = 0;
                }
                break;
                case FTInteger:
                {
                    int ival = DBFReadIntegerAttribute(pdbf, iRow, iCol);
                    int a = 0;
                }
                break;
                case FTDouble:
                {
                    double dval = DBFReadDoubleAttribute(pdbf, iRow, iCol);
                    int a = 0;
                }
                break;
                case FTLogical:
                {
                    const char *val = DBFReadLogicalAttribute(pdbf, iRow, iCol);
                    int a = 0;
                }
                break;
                default:
                    break;
                }
            }
        }

        //> 使用完关闭DBF文件
        DBFClose(pdbf);
        return TRUE;
    }
    return FALSE;
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值