首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将v8类型转换为c++类型(字符串)

将v8类型转换为c++类型(字符串)
EN

Stack Overflow用户
提问于 2020-08-03 00:20:17
回答 1查看 248关注 0票数 0

我正在为node.js做一个c++插件,我正在努力传递和获取数据。我知道如何将v8::Number转换为double,将double转换为v8::Number,将int转换为v8:Number,但我还需要更多。主要是,将v8::String转换为std::string并返回,将v8::Number转换为int,将v8::Array转换为Array并返回。此外,将js对象转移到一些c++变量也很好,但这并不是很必要。有人知道该怎么做吗?附注:我看了一遍文档,我没有找到任何关于数组和对象的东西,只找到了这个根据字符串的string a (*v8::String::Utf8Value(args[0]->ToString()))。但是它不工作,我得到一个错误error C2660: v8::Value::ToString: function does not get 0 argumentserror C2512: v8::String::Utf8Value: no suitable default constructor。我没有更多的想法来实现它。有人能帮帮忙吗?我也尝试过从c++返回数据。在这种情况下,它是有效的,但如果我这样做:args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, "world").ToLocalChecked());

代码语言:javascript
代码运行次数:0
运行
复制
    string s = "world";
    args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, s).ToLocalChecked());

我得到一个错误error C2664: "v8::MaybeLocal<v8::String> v8::String::NewFromUtf8(v8::Isolate *,const char *,v8::NewStringType,int)": cannot convert argument 2 from "std::string" to "const char *"

我不知道这里出了什么问题。如果有人有使用c++插件和v8类型的经验,该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-08-03 04:52:54

为了理解v8::String,文档的最新版本帮助:https://v8docs.nodesource.com/node-14.1/d4/d1b/classv8_1_1_string_1_1_utf8_value.html (与Node0.8时代相比,一些签名发生了一些变化--如果您想要使用C++进行开发,强烈建议您学习如何理解编译器的错误消息!)。

要了解std::string,请参阅一些C++文档,例如:https://en.cppreference.com/w/cpp/string/basic_string

如果你需要一个实际的例子,你可以看看V8的samples/process.cc,它有一个将任何JS对象(例如v8::String)转换成std::string的函数ObjectToString。只有两行!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63218322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档