C++ 将字符串设置为v8数组
我使用Nan调查本机节点插件 因此,我尝试使用以下代码将字符串数组返回给节点: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_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() );