Я хочу прочитать значение 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: нестандартный синтаксис; использовать&создать указатель на член
я понятия не имею, куда поставить &
Мой C ++ довольно ржавый, но вам не нужно добавлять скобки в конце?
std::string appdata = arr[0].ToString();
Похоже, код пытается получить указатель на функцию-член ToString и присвоить ее переменной std :: string.
Что ж, вот ответ для будущих чудес:
JSValue MyValue = view_->web_view()->ExecuteJavascriptWithResult(WSLit("appdata"), WSLit("")).ToString();
WebString asd(MyValue.ToString());
std::string appdata = ToString(asd);
Попробуйте изменить:
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
, Библиотеки не устают от своего упрямства, но делают как вам угодно
У меня недостаточно репутации, чтобы комментировать. Поэтому мне пришлось вместо этого изменить свой ответ.