以下是一种可能的实现方法:

#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 对象

nodejs C++ stdvectorstring 转LocalArray

原文地址: https://www.cveoy.top/t/topic/g9aY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录