Как я могу прочитать переменную Javascript с помощью Awesomium? Переполнение стека

Я хочу прочитать значение 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: нестандартный синтаксис; использовать&создать указатель на член

я понятия не имею, куда поставить &

0

Решение

Мой C ++ довольно ржавый, но вам не нужно добавлять скобки в конце?

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

Похоже, код пытается получить указатель на функцию-член ToString и присвоить ее переменной std :: string.

0

Другие решения

Что ж, вот ответ для будущих чудес:

    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();

Как сказал Майк Климентьев, вы назначаете метод ToString переменной appdata. Когда вы добавляете круглые скобки, это делает вызов функции, а не прямое присвоение функции переменной.

Кроме того, когда вы добавляете скобки, сообщение об ошибке компилятора говорит вам, что он не может преобразовать тип «Awesomium :: WebString» в тип «std :: string». В самом начале строки у вас есть std::string appdata Это объявляет переменную appdata типа std::string, Однако метод ToString () возвращает тип Awesomium::WebStringдля которого нет преобразования в тип std::string

РЕДАКТИРОВАТЬ:
@bugraarslan Исходя из опыта, я бы с осторожностью относился к вашему обходному пути. Нет простого преобразования между двумя типами, потому что они не написали один. Обычно это означает, что вы можете использовать тип Awesomium::WebString или бороться с библиотекой, используя знакомый тип, а именно, std::string, Библиотеки не устают от своего упрямства, но делают как вам угодно

У меня недостаточно репутации, чтобы комментировать. Поэтому мне пришлось вместо этого изменить свой ответ.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector