v8 将javascript字符串转为char*

1 场景:

在node.js的C++扩展中,需要将js类型的参数传递给C++进行处理,所以需要将js类型转换为C++类型,例如将js字符串转换为char*。

2 步骤:

(1) js字符串转为v8::String类型

(2)v8::String类型转为 String::Utf8Value类型

(3)String::Utf8Value类型转为char* 或者const char*

3 思路:

node 的C++扩展的导出函数形式一般如下:

void Method(const FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = args.GetIsolate();
  args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}

 如果参数为字符串,转为v8 的String类型,判断如下:

Local<Value> arg = args[0];

if (arg->IsString()){
    Local<String> ss = arg->ToString();
}

// IsString() ToString() 是v8::Value类的函数

接着,可以将v8::String类型转为 String::Utf8Value类型

String::Utf8Value value(ss);

// String::Utf8Value的构造函数参数类型为Local<v8::Value>,所以可以直接传入ss

然后,String::Utf8Value类型转为char* 或者const char*

char * cc = *value;

// String::Utf8Value 的函数
// char* operator* ()
// const char* operator* () const

4 参考文档:

node的C++扩展官方文档:https://nodejs.org/dist/latest-v8.x/docs/api/addons.html

v8 文档:https://v8docs.nodesource.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值