2017-01-03 64 views
0

我有這樣的:比較V8字符串(Node.js的插件)

if (!args[2]->IsString() || (*args[2]->ToString() != "true" && *args[2]->ToString() != "false")) { 
     Nan::ThrowTypeError("Third argument to 'replace-line' must be a string representing whether to find or replace."); 
     return; 
    } 

但我得到一個編譯錯誤andwarnings:

../hello.cpp:49:58: error: comparison between distinct pointer types ‘v8::String*’ and ‘const char*’ lacks a cast [-fpermissive] 
../hello.cpp:49:92: warning: comparison with string literal results in unspecified behaviour [-Waddress] 
    if (!args[2]->IsString() || (*args[2]->ToString() != "true" && *args[2]->ToString() != "false")) { 

我怎麼能正確地比較普通的C弦弦V8?

回答

1

您可以轉換使用v8::String::NewFromOneByte詳細in the documentation也有其他來源,如果你想。

如果您想以另一種方式使用,您將不得不創建自己的緩衝區並使用WriteOneByte

1

您可以構建一個v8::String::Utf8Valuev8::String::Utf8Value arg(args[2]->ToString())和比較,爲C字符串文字(事件雖然使用strcmp/strncmp,而不是==或從構建std::string)。