本文整理汇总了C++中LuaTable::SubTableExpr方法的典型用法代码示例。如果您正苦于以下问题:C++ LuaTable::SubTableExpr方法的具体用法?C++ LuaTable::SubTableExpr怎么用?C++ LuaTable::SubTableExpr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LuaTable
的用法示例。
在下文中一共展示了LuaTable::SubTableExpr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SubTableExpr
LuaTable LuaTable::SubTableExpr(const string& expr) const
{
if (expr.empty()) {
return LuaTable(*this);
}
if (!isValid) {
return LuaTable();
}
string::size_type endPos;
LuaTable nextTable;
if (expr[0] == '[') { // numeric key
endPos = expr.find(']');
if (endPos == string::npos) {
return LuaTable(); // missing brace
}
const char* startPtr = expr.c_str() + 1; // skip the '['
char* endPtr;
const int index = strtol(startPtr, &endPtr, 10);
if (endPtr == startPtr) {
return LuaTable(); // invalid index
}
endPos++; // eat the ']'
nextTable = SubTable(index);
}
else { // string key
endPos = expr.find_first_of(".[");
if (endPos == string::npos) {
return SubTable(expr);
}
nextTable = SubTable(expr.substr(0, endPos));
}
if (expr[endPos] == '.') {
endPos++; // eat the dot
}
return nextTable.SubTableExpr(expr.substr(endPos));
}