nodejs C++ stdvectorstring 转LocalArray
以下是一种可能的实现方法:
#include <node.h>
#include <vector>
#include <string>
using namespace v8;
Local<Array> vectorToJsArray(const std::vector<std::string>& vec) {
Isolate* isolate = Isolate::GetCurrent();
Local<Array> jsArray = Array::New(isolate, vec.size());
for (size_t i = 0; i < vec.size(); ++i) {
jsArray->Set(isolate->GetCurrentContext(), i, String::NewFromUtf8(isolate, vec[i].c_str()).ToLocalChecked());
}
return jsArray;
}
使用方式:
std::vector<std::string> vec = {"hello", "world"};
Local<Array> jsArray = vectorToJsArray(vec);
其中,Isolate::GetCurrent() 可以获取当前线程的 isolate 对象,Array::New() 可以创建一个指定长度的 JavaScript 数组,String::NewFromUtf8() 可以将 C++ 字符串转为 JavaScript 字符串。注意在使用 String::NewFromUtf8() 时,需要使用 ToLocalChecked() 方法获取一个不为空的 Local
原文地址: https://www.cveoy.top/t/topic/g9aY 著作权归作者所有。请勿转载和采集!