c++ - V8,将文本 append 到数组的最后一个元素

标签 c++ arrays node.js append v8

我正在构建一个基于 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"}
]

我的问题是如何将字符串 append 到数组最后一个对象的 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 中?

最佳答案

您可以使用 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!")));

关于c++ - V8,将文本 append 到数组的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23147079/

相关文章:

java - 使用循环从字符串中删除特定字符串

python - linspace 总是包含最后一点?

javascript - 如何将数组的内容输出到 HTML div 容器?

node.js - Passport 中的自定义重定向

c++ - 如何指示编译器为 __m128 生成未对齐的加载

c++ - 鼠标事件QT

c++ - 为什么 clang++ 报告与 "value stored to ' .. .' during its initialization is never read"的结构化绑定(bind)?

c++ - C++ 基类如何在运行时确定方法是否已被覆盖?

node.js - Node - Mongodb - 如何查询特定的嵌套字段

node.js - 获取 Node.js URL 对象的 "Symbol(context)"属性的访问权限