我正在构建基于V8的本机NodeJS C ++模块。我在循环中得到了以下代码:
Local<Array> nodes = Array::New();
/********** INSIDE THE LOOP ************/
Local<Object> node_obj = Object::New();
node_obj->Set(data_symbol, String::New(input.substr(openPos + (lastTag > 1 ? 3 : 2), pos - openPos - (lastTag > 1 ? 3 : 2) - 1).c_str()));
node_obj->Set(tag_symbol, Integer::New(lastTag));
nodes->Set(id, node_obj);
我正在使用对象填充数组,因此输出(在JS中)将如下所示:
[
{tag: 2, data: "asdsadsadasfddgdfgdfg"},
{tag: 1, data: "afg235235232fgdfg"}
]
我的问题是我如何将字符串附加到数组的最后一个对象的data_symbol?
可在此处找到完整代码:http://pastebin.com/tCgWCxyA
我正在尝试做的例子:
让我们以此结构为例:
struct Node {
short tag;
std::string data;
Node(const std::string& input, short tagId) : tag(tagId), data(input) {}
};
std::vector<Node> elems;
我的问题是我该怎么做
elems.back().data.append("SomeString");
在V8中?
答案 0 :(得分:1)
你可以这样使用String::Concat(Handle<String> left, Handle<String>right)
:
HandleScope scope;
Local<Object> lastnode = nodes->Get(nodes->Length() - 1)->ToObject();
Local<String> lastdatastr = lastnode->Get(data_symbol)->ToString();
lastnode->Set(data_symbol,
String::Concat(lastdatastr, String::New(" I'm appended!")));