有没有一种简单的方法可以将lua表转换为C++;数组还是向量?

有没有一种简单的方法可以将lua表转换为C++;数组还是向量?,lua,package-managers,lua-c++-connection,Lua,Package Managers,Lua C++ Connection,我开始制作自己的包管理器,并开始开发依赖系统。 建筑文件是用lua编写的,它们看起来像这样: 包={ name=“pfetch”, version=“0.6.0”, 来源=”https://github.com/dylanaraps/pfetch/archive/0.6.0.tar.gz", git=false } 依赖项={ “一些dep”, “一些dep2” } 函数安装() quantum_安装(“pfetch”,错误) 结束 唯一的问题是,我不知道如何转换 依赖项={ “一些dep”,

我开始制作自己的包管理器,并开始开发依赖系统。 建筑文件是用lua编写的,它们看起来像这样:

包={
name=“pfetch”,
version=“0.6.0”,
来源=”https://github.com/dylanaraps/pfetch/archive/0.6.0.tar.gz",
git=false
}
依赖项={
“一些dep”,
“一些dep2”
}
函数安装()
quantum_安装(“pfetch”,错误)
结束
唯一的问题是,我不知道如何转换

依赖项={
“一些dep”,
“一些dep2”
}

到一个全局C++数组:<代码> [“某物DEP”、“某个DEP2”] < /代码> 应忽略列表中作为字符串无效的任何内容。 有什么好办法吗? 提前谢谢


<强>注:我使用C++ API与C++中的Lua接口。我不知道Lua的错误是使用了<代码> LojMP >代码>还是C++异常。

< P>根据你的评论中的澄清,这样的事情对你来说是有效的:

#包括
#包括
#包括
#包括
向量依赖;
静态int q64795651_集_依赖项(lua_状态*L){
依赖项;
lua_机顶盒(L,1);
for(lua_整数i=1;lua_geti(L,1,i)!=lua_TNIL;++i){
尺寸透镜;
const char*str=lua_tolstring(L、2和len);
如果(str){
push_back(std::string{str,len});
}
lua_机顶盒(L,1);
}
返回0;
}
静态int q64795651_打印_依赖项(lua_状态*){
用于(常量自动和dep:依赖项){

std::没有简单的方法。1)将每个Lua字符串推送到C API堆栈,并转换为C指针
Lua_gettable+Lua_tostring
;2)创建C数组;3)将C数组传递给C函数;4)只有在C函数退出后,才能从C API堆栈中弹出所有Lua字符串。这是否回答了您的问题?@Nifim-处理字符串时(与数字不同),你必须考虑可能的“惊喜”从C++中,这是一个很好的观点,我没有真正想过一个字符串数组会如何使这个异类。你想用数组/向量做什么?立即操作它,然后丢弃它,保存到C++全局或什么东西,或者作为用户数据传递回Lua?如果你的文章中有什么不好的东西,应该怎么办?谢谢你!它是有效的。你能不能解释一下你在结尾说的内容?我仍然是C++初学者,但是在大型项目上很有趣。@ Cuto OpLeMeTeE/Lua可以编译为使用<代码> SETJMP()< <代码> />代码>或C++异常,如果您的LUA是用<代码> SETJMP()/<代码> />代码> LangJMP()/Cux>编译的,并且您不能更改它,那么您必须非常小心,如果发生LUA错误,就不必意外地允许未定义的行为。(它从第二个变量获取依赖项)注意:我已经做了,这样它就可以处理除依赖项之外的所有内容part@ChocolateMeteor因此,您不需要将该表作为参数,而是希望从名为
依赖项的Lua全局读取它。如果是,则替换第一个
Lua_settop(L,1)
带有
lua_settop(L,0);lua_getglobal(L,dependencies”);
$ g++ -fPIC -shared q64795651.cpp -o q64795651.so
$ lua5.3
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> q64795651 = require('q64795651')
> dependencies = {
>>    "some_dep",
>>    "some_dep2"
>> }
> q64795651.set_dependencies(dependencies)
> q64795651.print_dependencies()
some_dep
some_dep2
>