2016-12-24 72 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打庫。庫不輪胎在他們的固執,但請你

我沒有足夠的信譽發表意見做。所以,我不得不修改我的答案。