2017-01-03 48 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)。