我正在尝试在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进行编码时我可能需要明确一点吗?
我确信这很简单,我很想念。我很感激有人建议一个更好的方法。
答案 0 :(得分:1)
尝试在您刚创建的ToString
上致电Integer
。
请参阅此处的函数声明:https://chromium.googlesource.com/v8/v8/+/6.5.254.41/include/v8.h#2333
“JavaScript只强制int”的魔力必须在某个地方实现 - 即在C ++端,所有这些转换都是手动完成的; - )