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