我试图在v8中压缩一个整数。
到目前为止,我取得成功的最接近的方法是使用String::Concat。我试着编写这个方法(在node.js 9.11.1本机插件中),但它没有编译。
void Method(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
const int num = 42;
args.GetReturnValue().Set(
String::Concat(String::NewFromUtf8(isolate, "The num is: "),
Integer::New(isolate, num)));
}编译错误是:
'=': cannot convert from 'v8::Integer *' to 'v8::String *volatile '我还无法找出v8 API的正确部分来将整数格式化为字符串。我(可能很明显)不熟悉v8 API,我很难找到好的示例来学习。
我是在回答这个问题:How to convert an Integer to a String in V8?,尽管与现代的v8 API相比,它似乎已经过时了。例如,该示例似乎是预“隔离”的。
我的印象是,Concat会接受这一点,因为在JavaScript中,它只是将int强制到一个字符串(这似乎是我所引用的问题的要点)。但我想,在用v8编写代码时,我可能必须明确这一点吗?
我肯定我错过了一些简单的东西。如果有人提出更好的建议我会很感激的。
发布于 2018-04-06 04:36:54
尝试在您刚刚创建的ToString上调用Integer。
参见此处的函数声明:https://chromium.googlesource.com/v8/v8/+/6.5.254.41/include/v8.h#2333
"JavaScript只是强制执行int“的魔术必须在某个地方实现--即在C++端,所有这些转换都是手动完成的;-)
https://stackoverflow.com/questions/49684638
复制相似问题