문제

C ++에는 a가 있습니다 map<string, string>, 알 수없는 수의 항목을 포함합니다. LUA 함수가 데이터를 테이블로 사용할 수 있도록 LUA 함수로이를 전달하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

실제 LUA 테이블을 원한다면 :

lua_newtable(L);
int top = lua_gettop(L);

for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) {
    const char* key = it->first.c_str();
    const char* value = it->second.c_str();
    lua_pushlstring(L, key, it->first.size());
    lua_pushlstring(L, value, it->second.size());
    lua_settable(L, top);
}

지도에 적합한 유형이 대체되었습니다.

다른 팁

몇 가지 옵션 ...

  1. 지도를 새 LUA 테이블에 복사하고 LUA 테이블을 전달하십시오.

  2. a 프록시 테이블 그것은 중식 가능한 말을 통해 읽고 글을 지시합니다 __index 그리고 __newindex 메타 메트 드

(1)에 대한 단점은 물론 모든 복사입니다.

(2)에 대한 단점은 그 것입니다 pairs() 프록시 테이블에서는 작동하지 않습니다

일반화를 위해 LUA에 대한 수정에 대한 논의 pairs ~이다 위키에서 그리고 이 메일 링리스트 스레드. 일반화 pairs 예상됩니다 루아 5.2

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top