2

我是编写节点 C++ 插件的新手。
我想将参数字符串从节点更改为更改 c++ 字符串,
但出现错误,我尝试了这个问题,
如何将 std::string 转换为 v8 的 Local<string> 它不起作用。
我已经尝试过这些功能,但没有一个工作。

void Method(const FunctionCallbackInfo<Value>& args) {
    Isolate* isolate = args.GetIsolate();
    // Local<Value> layer_name = Local<String>::Cast(args[0]);
    // Local<Value> imei = Local<String>::Cast(args[1]);
    // Local<String> layer_name = args[0]->ToString();
    // Local<String> imei = args[1]->ToString();
    // v8::String::Utf8Value layer_name(args[0]);

    // v8::String::Utf8Value param1(args[0]);
    // std::string from = std::string(*param1);

    // std::string encoded_val = "test";
    // Local<String> returned_str = Local<String>::Cast(args[0]);
    // encoded_val.c_str() = returned_str;

    // v8::String::Utf8Value s(args[0]);
//     Local<String> s = v8::String::NewFromUtf8(isolate, args[0], 
// NewStringType::kNormal).ToLocalChecked();
//     std::string str(*s);

    // std::string str(v8::String::Utf8Value(args[0].As<String>());

    // v8::String::Utf8Value str(isolate, args[0]);
    // std::string layer_name(*str);

    // v8::String::Utf8Value layer_name(args[0]); 
    // char* str = ToCString(str); 
    // std::string str(*layer_name);

    std::string result;
    int age = 0;
    result = std::to_string(age);
    int32_t res = IMEIHash(result, 10000);
    args.GetReturnValue().Set(res);
}```
so how to change v8 args[0] to c++ string, in node v12.16.0 ?
4

1 回答 1

2

尝试这个

void MyV8ToCppStr(const v8::FunctionCallbackInfo<v8::Value> &args)
{

  v8::Isolate* isolate = args.GetIsolate();
  v8::String::Utf8Value str(isolate, args[0]);
  std::string cppStr(*str);
}
于 2020-06-15T05:51:57.627 回答