如何在 V8 中对整数进行字符串化?
How to stringify an Integer in V8?
我正在尝试将 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 相比它显得陈旧。例如,该示例似乎是 "isolate" 之前的
我的印象是 Concat 会接受这个,因为在 JavaScript 中它只是将 int 强制转换为字符串(这似乎是我引用的那个问题的要点)。但我想也许我在使用 v8 编码时必须明确说明这一点?
我确定我缺少的是一些简单的东西。如果有人提出更好的方法,我将不胜感激。
尝试在您刚刚创建的 Integer
上调用 ToString
。
在此处查看函数声明:https://chromium.googlesource.com/v8/v8/+/6.5.254.41/include/v8.h#2333
魔法 "JavaScript just coerces the int" 必须在某处实现——即在 C++ 端,所有此类转换都是手动完成的 ;-)
我正在尝试将 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 相比它显得陈旧。例如,该示例似乎是 "isolate" 之前的
我的印象是 Concat 会接受这个,因为在 JavaScript 中它只是将 int 强制转换为字符串(这似乎是我引用的那个问题的要点)。但我想也许我在使用 v8 编码时必须明确说明这一点?
我确定我缺少的是一些简单的东西。如果有人提出更好的方法,我将不胜感激。
尝试在您刚刚创建的 Integer
上调用 ToString
。
在此处查看函数声明:https://chromium.googlesource.com/v8/v8/+/6.5.254.41/include/v8.h#2333
魔法 "JavaScript just coerces the int" 必须在某处实现——即在 C++ 端,所有此类转换都是手动完成的 ;-)