如何将节点 V8 字符串转换为 C++ 字符串

how to convert node v8 string to c++ string

本文关键字:字符串 转换 C++ V8 节点      更新时间:2023-10-16

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

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 ?

试试这个

void MyV8ToCppStr(const v8::FunctionCallbackInfo<v8::Value> &args)
{
v8::Isolate* isolate = args.GetIsolate();
v8::String::Utf8Value str(isolate, args[0]);
std::string cppStr(*str);
}