分享

自己写了一个在C/C++中读取lua配置文件的类(转)

 汇英四方 2013-11-12
这个类就是调用了一下lua文件中的全局变量信息,基本没什么技术含量......


//LuaEx.h文件

#pragma once
#include <Windows.h>
extern "C"
{
#include "lua/lua.h"
#include "lua/lualib.h"
#include "lua/lauxlib.h"
};

class LuaEx
{
public:
        LuaEx(void);
        ~LuaEx(void);
        bool LoadFile(LPCSTR str); //载入lua文件
        LPSTR LoadString(LPCSTR str); //读取字符串
        int LoadInteger(LPCSTR str); //读取整形
        double LoadDouble(LPCSTR str); //读取浮点型
        bool LoadBoolean(LPCSTR str); //读取布尔型

private:
        lua_State *L; //lua指针
};

//LuaEx.cpp文件

#include ".\luaex.h"
#pragma comment(lib, ".\\lua\\lua.lib")

LuaEx::LuaEx(void)
{
        L = lua_open();
        luaL_openlibs(L);
}

LuaEx::~LuaEx(void)
{
        lua_close(L);
}

bool LuaEx::LoadFile(LPCSTR str)
{
        if(luaL_dofile(L, str))
        {
                return false;
        }
        return true;
}

LPSTR LuaEx::LoadString(LPCSTR str)
{
        lua_getglobal(L, str);
        if (lua_isstring(L, -1))
        {
                return (LPSTR)lua_tostring(L, -1);
        }
        return NULL;
}

int LuaEx::LoadInteger(LPCSTR str)
{
        lua_getglobal(L, str);
        if (lua_isnumber(L, -1))
        {
                return (int)lua_tointeger(L, -1);
        }
        return NULL;
}

double LuaEx::LoadDouble(LPCSTR str)
{
        lua_getglobal(L, str);
        if (lua_isnumber(L, -1))
        {
                return (double)lua_tonumber(L, -1);
        }
        return 0.0;
}

bool LuaEx::LoadBoolean(LPCSTR str)
{
        lua_getglobal(L, str);
        if (lua_isboolean(L, -1))
        {
                return (bool)lua_toboolean(L, -1);
        }
        return false;
}


在要使用配置文件的地方实例化一个LuaEx类就可以了。
先调用LoadFile载入文件,参数为文件路径。文件格式可以按照如下方式:

title = "游戏"
width = 640
height = 480
isWindowed = true;
useSound = false;
hideMouse = false;

结尾分号可加可不加,就是写一个lua脚本,但是只包含变量不包含方法。
之后就可以读取其中内容了。例如
LoadString("title"); //表示载入变量名为title的变量的值。
本类中所有函数的参数都是字符串。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多