2016-12-24 73 views
0

我想从页面读取一个Javascript值,但是如何?如何阅读Awesomium的Javascript变量? C++

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:非标准语法;使用“&”创建一个指向成员

TBH我不知道往哪里放&

回答

0

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

std::string appdata = arr[0].ToString(); 

既然这样,代码似乎是试图让一个指针指向一个成员函数的ToString并将其分配给的std :: string变量。

+0

好,我尝试这样做,下面是结果: ** Awesomium :: WebString '到' 的std :: basic_string的<炭的std :: char_traits ,性病::分配器> 没有合适的用户从“Awesomium :: WebString”定义的转换到“的std :: string”存在** – bugraarslan

+0

所以,我的观察是正确的:你是一个值/对象的分配函数指针来代替。 :) –

0

嗯,这里是未来wonderers答案:

JSValue MyValue = view_->web_view()->ExecuteJavascriptWithResult(WSLit("appdata"), WSLit("")).ToString(); 
    WebString asd(MyValue.ToString()); 
    std::string appdata = ToString(asd); 
0

尝试改变:

std::string appdata = arr[0].ToString; 

Awesomium::WebString appdata = arr[0].ToString(); 

麦克Klimentiev说,你分配方法ToString到变量appdata。当添加括号时,它会进行函数调用,而不是将函数直接分配给变量。

此外,当您添加括号,编译器错误消息告诉你,它不能转换型“Awesomium :: WebString”输入“的std :: string”。在生产线的开始你有std::string appdata这声明std::string类型的变量appdata。然而,toString()方法返回一个类型的Awesomium::WebString对此有没有转换的类型std::string

编辑: @bugraarslan根据经验,我会警惕你的解决办法的。这两种类型之间没有简单的转换,因为它们没有写入。通常,这意味着您可以使用类型Awesomium::WebString或使用熟悉的类型,即std::string打库。库不轮胎在他们的固执,但请你

我没有足够的信誉发表意见做。所以,我不得不修改我的答案。