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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章