2017-01-03 92 views
1

我想弄清楚如何在C++中创建正则表达式。我想将从JavaScript传递到C++的字符串转换为正则表达式。Nodejs Addon - 将正则表达式字符串传递给C++

我有这样的:

std::regex re; 

    if (!args[1]->IsString()) { 
    Nan::ThrowTypeError("Second argument to 'replace-line' must be a string regular expression."); 
    return; 
    } 
    else{ 
    v8::String::Utf8Value regexin(args[1]->ToString()); 
    re(*regexin); 
    } 

但这无法编译,与此错误:

../hello.cpp: In function ‘void Method(const v8::FunctionCallbackInfo<v8::Value>&)’: 
../hello.cpp:50:16: error: no match for call to ‘(regex_t {aka re_pattern_buffer}) (char*)’ 
    re(*regexin); 

任何人知道我可以声明/创建一个regex给这个v8::String

+1

它为我编译(节点7.0.0,cmake-js 3.3.1)。另外,'regexin(val.As () - > GetSource())'也许更具表现力 – pergy

回答

1

我不知道这个,但也许你刚刚宣布regexin,但没有初始化它呢?你有没有试过做V8... regexin = new V8... (args...)