首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Awesomium读取Javascript变量?c++

如何使用Awesomium读取Javascript变量?c++
EN

Stack Overflow用户
提问于 2016-12-24 01:59:14
回答 3查看 194关注 0票数 0

我想从页面中读取Javascript值,但是如何读取呢?

代码语言:javascript
复制
    std::string jscript("[appdata]");
    JSValue value = view_->web_view()->ExecuteJavascriptWithResult(WSLit(jscript.c_str()), WSLit(""));
    JSArray& arr = value.ToArray();
    std::string appdata = arr[0].ToString;

当我尝试使用它时,我得到了Awesomium::JSValue::ToString:非标准语法;使用'&‘来创建指向成员的指针

我不知道把&放在哪里

EN

回答 3

Stack Overflow用户

发布于 2016-12-24 02:07:53

我的C++相当生疏,但是您不需要在末尾添加括号吗?

代码语言:javascript
复制
std::string appdata = arr[0].ToString();

目前,代码似乎试图获得一个指向成员函数ToString的指针,并将其赋值给std::string变量。

票数 0
EN

Stack Overflow用户

发布于 2016-12-24 02:17:32

好吧,以下是未来仙人的答案:

代码语言:javascript
复制
    JSValue MyValue = view_->web_view()->ExecuteJavascriptWithResult(WSLit("appdata"), WSLit("")).ToString();
    WebString asd(MyValue.ToString());
    std::string appdata = ToString(asd);
票数 0
EN

Stack Overflow用户

发布于 2017-01-24 06:27:05

试着改变:

代码语言:javascript
复制
std::string appdata = arr[0].ToString;

代码语言:javascript
复制
Awesomium::WebString appdata = arr[0].ToString();

正如所说,您正在将方法ToString分配给变量appdata。添加括号时,它会发出函数调用,而不是将函数直接赋值给变量。

另外,当添加括号时,编译器错误消息告诉您,它不能将类型"Awesomium::WebString“转换为"std::string”类型。在行的开头,您有std::string appdata,这声明了一个类型为std::string的变量appdata。但是,方法ToString()返回没有转换到std::string类型的Awesomium::WebString类型

编辑:@bugraarslan基于经验,我会警惕你的解决办法。这两种类型之间没有很容易的转换,因为它们没有编写一个。通常,这意味着您可以使用Awesomium::WebString类型,也可以通过使用熟悉的类型(即std::string )来对抗库。图书馆不会对自己的固执感到厌倦,但要随心所欲。

我没有足够的声誉来发表评论。因此,我不得不修改我的答案。

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

https://stackoverflow.com/questions/41309673

复制
相关文章

相似问题

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