您的位置:首页 > 编程语言 > Lua

C++读取lua脚本

2011-10-18 07:35 211 查看
#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的变量的值。

本类中所有函数的参数都是字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: