Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串设置为v8数组_C++_V8_Node.js Nan - Fatal编程技术网

C++ 将字符串设置为v8数组

C++ 将字符串设置为v8数组,c++,v8,node.js-nan,C++,V8,Node.js Nan,我使用Nan调查本机节点插件 因此,我尝试使用以下代码将字符串数组返回给节点: NAN_METHOD(open) { Local<Array> v8Array = Nan::New<Array>(); std::string str = "erwer"; v8Array->Set(0, Nan::New<String>(str.c_str()) ); //v8Array->Set(0, Nan::New<Int

我使用Nan调查本机节点插件

因此,我尝试使用以下代码将字符串数组返回给节点:

NAN_METHOD(open) {
    Local<Array> v8Array = Nan::New<Array>();
    std::string str = "erwer";
    v8Array->Set(0, Nan::New<String>(str.c_str()) );
    //v8Array->Set(0, Nan::New<Integer>(12) );
    info.GetReturnValue().Set(v8Array);
}
nanu方法(开放){
本地v8Array=Nan::New();
std::string str=“erwer”;
v8Array->Set(0,Nan::New(str.c_str());
//v8Array->Set(0,Nan::New(12));
info.GetReturnValue().Set(v8Array);
}
但它没有被编译:

错误:调用“v8::Array::Set(int,Nan::imp::MaybeFactoryBase::return\t)”时没有匹配的函数
v8Array->Set(0,Nan::New(str.c_str())

但是添加一个项目作为整数(注释行)可以正常工作。
为什么我不能向数组中添加一个字符串?

因此,我最终意识到,如果是字符串,则第二个参数应该用ToLocalChecked()包装:

v8Array->Set(i,Nan::New(results[i].c_str()).ToLocalChecked());

因此,我终于意识到,如果第二个参数是字符串,则应使用ToLocalChecked()包装:

v8Array->Set(i,Nan::New(results[i].c_str()).ToLocalChecked());
v8Array->Set(i, Nan::New<String>(results[i].c_str()).ToLocalChecked() );