我有一个类:</p>
class SomeClass
{
void initFromBuffer(void* buffer,int length);
void initFromString(const std::string& str);
}
使用 tolua++,得到如下绑定:
static int SomeClass_initFromBuffer00(lua_State* tolua_S)
{
SomeClass* self = (SomeClass*) tolua_tousertype(tolua_S,1,0);
void* buffer = ((void*) tolua_touserdata(tolua_S,2,0));
int length = ((int) tolua_tonumber(tolua_S,3,0));
self->initFromBuffer(buffer,length);
}
和:
static int SomeClass_initFromString00(lua_State* tolua_S)
{
SomeClass* self = (SomeClass*) tolua_tousertype(tolua_S,1,0);
const std::string str = ((const std::string) tolua_tocppstring(tolua_S,2,0));
self->initFromString(str);
tolua_pushcppstring(tolua_S,(const char*)str);
}
现在,我想将二进制数据从 lua 传递到 c++,二进制中有 '\0',所以如果我使用 initFromString 传递它,二进制数据将被修剪。但是如果我使用 initFromBuffer 来传递它,我在 `void* buffer = ((void*) tolua_touserdata(tolua_S,2,0)); 处得到了错误的 ptr,指针为空。
那么,我如何将二进制字符串从 lua 传递到 C++?