用Lua字符要用字符库:
luaopen_string(L) 一。基础只是 1.lua文件 –为注释 2.dofile(“111.lua”); –调用另一个脚本 3.直接 a = 10;为全局变量 上面的111.lua脚本可以访问a变量 4.local a =10; –这时a为本地变量,不过建议不要用全局变量,全局变量是不会释放的会一直占用内存,所以尽量使用本地变量 例:main.lua print(“1111111111111111”) a = 10 dofile(“111.lua”) –执行另外一个脚本 print(a)
例:111.lua print(a+1)
二。lua基础数据类型 *Nil 空类型(跟c的NULL,不一样的是NULL是为0 而nil 是直接没有): #用于区分具有一些数据或者没有(nil)数据的值 #全局变量设为nil会交给垃圾回收 &local a = nil &print(type(a)) –>nil type是判断数据的类型 &nil 可以直接赋给全局变量来进行释放
*boolean 类型 #要注意lua中所有的值都可以作为条件 #除了false和nul为假,其他值都为真,0为真
*Numbers类型 #lua中没有整数,都是用浮点数运算 #对应c的double类型 #新版Lua中有基于64位的整型,旧版不支持64位 #tonumber转换格式 : 比如 将1001转换为number类型: local b = tonumber(“1001”); print(“type(b)”); 可以看到输出: number
注意只能转化字符串 *string 类型 #tostring转换格式 如: local a = 123 local b = tostring(a); print(type(b)); 输出为:string #[[ ]] 多行字符串赋值 如: local html = [[ <html> <\html> ]] 输出为<html> <\html> #“ 与c一样的转义\” ” #..字符串拼接 如: html = “test1″ ..”test2=” ; print(html); 输出:输出为test1test2 注意在拼接的时候数据一定不能是nil 否则会出错
*string处理 #字符串长度string.len 计算字符串长度 如:string.len(“111″); #取字符串字串string.sub(str,3,5) 取str字符串3-5个(lua字符串从1开始数) #字符串查找Local b,e = string.find(str,”HEAD”)支持正则 如: local html = [[ <html> </html> ]] local b,e = string.find(html,”html”); print(“b = “..b ..”e=”..e);
注意返回有两个值 一个是b 查找到的字符的首地址,e查找到的字符的结束,
没找到都为nil #字符串替换string.gsub(str,”HEAD”,”XCJ”)支持正则 将str中的HEAD替换成XCJ
c++代码: // first.cpp : 定义控制台应用程序的入口点。 // extern “C” { #include<lua.h> #include<lauxlib.h> #include<lualib.h> }
int main(int argc, char* argv[]) { lua_State *L = lua_open(); //打开库 luaopen_base(L); luaopen_string(L); if (luaL_loadfile(L, “main.lua”)) { const char *error = lua_tostring(L, -1); //lua的错误会放到栈顶,lua_tostring是取栈顶 printf(“lua load error:%s”, error); return -1; } if (lua_pcall(L, 0, 0, 0)) { const char *error = lua_tostring(L, -1); printf(“lua_pcall error:%s”, error); return -1; } getchar(); return 0; }