使用C ++创建node.js插件。我想检查传递的参数是否为hi
。
节点应用:
addon.Hello("hi");
C ++:
if (args[0]->ToString() != "hi") {
ThrowException(Exception::TypeError(String::New("Sunday morning rain is falling...")));
return scope.Close(Undefined());
}
但它一直给我错误:
../ xxx.cc:在静态成员函数'static v8 :: Handle中 xxx :: New(const v8 :: Arguments&)': ../xxx.cc:41:29:错误:没有 匹配'operator!='(操作数类型是'v8 :: Local'和 'const char [6]') if(args [0] - > ToString()!=" hi"){ ^
答案 0 :(得分:1)
ToString()
返回一个String对象。您可以使用类似char* foo = *String::Utf8Value(args[0]->ToString());
的内容获取C字符串。
答案 1 :(得分:0)
是的,我有同样的问题,这似乎是编译:
using namespace std;
v8::String::Utf8Value arg2(args[2]->ToString());
if (strcmp(*arg2, "true") != 0 && strcmp(*arg2, "false") != 0) {
Nan::ThrowTypeError("Third argument to 'replace-line' must be a string representing whether to find or replace.");
return;
}
bool isReplace = strcmp(*arg2, "false") == 0 ? false : true;
我基本上通过其他答案的评论来达到我的解决方案,有人需要用实际解决方案更新新答案,这是我在这里所做的(我希望)。
答案 2 :(得分:0)
#include <string>
#include <node.h>
String::Utf8Value tmp(args[0]->ToString());
arg0 = std::string(*tmp);
//then you can compare string using "== or > or <"
if(arg0 == "hi")
{
...
}